Intereting Posts
ActionbarSherlock SearchView в menu.xml предоставляет ресурсы $ NotFoundException Как удалить / скрыть логотип Paypal с Card.io Phonegap iOS и Android? Как программно добавить группу в навигационный ящик Потерял секретный ключ для подписания андроида. Может ли приложение быть выпущено на Android Market? Espresso, прокрутка не работает, когда NestedScrollView или RecyclerView находится в CoordinatorLayout Отображение значка для пунктов меню панели действий в Honeycomb android 3.0 Android: снимать снимок камеры без подтверждения «сохранить» / «удалить» Загрузите изображение с помощью функции Parse Cloud Code Жизнеспособные варианты запуска NodeJS на Android (август 2017 г.) Как проинструктировать пользователей сообщать об ошибке в Android Каков наилучший способ загрузки 1000+ записей на сервер, который также содержит изображения для каждой записи из приложения iOS / Android? Открыть приложение с именем пакета с помощью ADB Почему дочерние представления наследуют альфа-значение от родительского макета Android не уважает цвета! Android java.lang.IllegalMonitorStateException: объект не заблокирован потоком перед ожиданием ()

Галерея изображений с горизонтальной прокруткой

Я пытаюсь сделать простой пример галереи изображений, используя horizontalscrollview и динамически добавляя изображения. Я искал примеры, но большинство из них слишком сложны. Есть ли простой пример того, как это сделать?

Solutions Collecting From Web of "Галерея изображений с горизонтальной прокруткой"

Вот простой пример, который реализовал горизонтальное представление прокрутки, чтобы выглядеть как галерея изображений

Это поможет вам

Добавить HorizontalScrollView в макете:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <HorizontalScrollView android:layout_width="match_parent" android:layout_height="wrap_content" > <LinearLayout android:id="@+id/mygallery" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" /> </HorizontalScrollView> </LinearLayout> 

Основной код Java:

 package com.example.androidhorizontalscrollviewgallery; import java.io.File; import android.os.Bundle; import android.os.Environment; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.view.Gravity; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.Toast; public class MainActivity extends Activity { LinearLayout myGallery; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myGallery = (LinearLayout)findViewById(R.id.mygallery); String ExternalStorageDirectoryPath = Environment .getExternalStorageDirectory() .getAbsolutePath(); String targetPath = ExternalStorageDirectoryPath + "/test/"; Toast.makeText(getApplicationContext(), targetPath, Toast.LENGTH_LONG).show(); File targetDirector = new File(targetPath); File[] files = targetDirector.listFiles(); for (File file : files){ myGallery.addView(insertPhoto(file.getAbsolutePath())); } } View insertPhoto(String path){ Bitmap bm = decodeSampledBitmapFromUri(path, 220, 220); LinearLayout layout = new LinearLayout(getApplicationContext()); layout.setLayoutParams(new LayoutParams(250, 250)); layout.setGravity(Gravity.CENTER); ImageView imageView = new ImageView(getApplicationContext()); imageView.setLayoutParams(new LayoutParams(220, 220)); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); imageView.setImageBitmap(bm); layout.addView(imageView); return layout; } public Bitmap decodeSampledBitmapFromUri(String path, int reqWidth, int reqHeight) { Bitmap bm = null; // First decode with inJustDecodeBounds=true to check dimensions final BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeFile(path, options); // Calculate inSampleSize options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight); // Decode bitmap with inSampleSize set options.inJustDecodeBounds = false; bm = BitmapFactory.decodeFile(path, options); return bm; } public int calculateInSampleSize( BitmapFactory.Options options, int reqWidth, int reqHeight) { // Raw height and width of image final int height = options.outHeight; final int width = options.outWidth; int inSampleSize = 1; if (height > reqHeight || width > reqWidth) { if (width > height) { inSampleSize = Math.round((float)height / (float)reqHeight); } else { inSampleSize = Math.round((float)width / (float)reqWidth); } } return inSampleSize; } } 

Примечание: в этом примере растровые изображения в HorizontalScrollView не будут удалены даже не на экране. Поэтому, если загружено слишком много растровых изображений, будет выброшена ошибка java.lang.OutOfMemoryError!

Вы можете создать div и установить переполнение для скрытия, затем вставить другое внутри него, которое имеет высоту или ширину всех изображений, зависит от вашей анимации, которую вы хотите горизонтально, идите со временем ширины на количество изображений и не забудьте включить поля в этом. Затем вы кодируете анимацию jQuery для запуска на более крупном div, который будет перемещать ее влево или вправо снова в зависимости от ваших предпочтений

eg $('pic').animate({left:'_____ <- enter width of single image together with margin here ' +'px','slow' <-- whatever speed you prefer);

А затем играть с ним оттуда. Ваш обработчик может щелкнуть по другой кнопке или на изображении … предпочтение снова. Он очень гибкий, без особого кодирования, это не лучший вариант для использования. Если это вас не устраивает, создайте массив изображений и проведите через них, а не используйте эти конкретные размеры для прокрутки. Удачи вам в этом. Надеюсь, я помог тебе.