Intereting Posts
Как вы делаете макеты для нескольких размеров экрана Android? Следует ли заменить панель действий ToolBar? Как создать экран заставки / Запуск экрана, который исчезает после загрузки приложения? (Реагировать родной) ОШИБКА: 32-разрядные бинарные файлы для эмулятора Android от Linux деактивированы Протокол DIAL для запуска приложения для Android Предотвращение дублирования деятельности Можно ли изменить владельца аккаунта на консоли разработчика Google Play? Проблема с метазоном и Android Являются ли поля чтения объекта Realm медленнее, чем объекты Java? Как получить доступ к элементам html, содержащимся внутри веб-представления? Android + eclipse + maven + actionbarsherlock Как обновить ListView в случае использования CursorAdapter? КлассNotFoundException после обновления ADT Как перемещаться между страницами в приложении PhoneGap? PhoneGap Android-плагин для более качественной аудиозаписи?

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

Я хотел бы создать приложение с горизонтальной галереей изображений (с одной строкой и несколькими столбцами). Сначала я пытаюсь использовать gridview, но его можно использовать только как вертикальную прокрутку. Могу ли я использовать ListView или GridView для этих целей?

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

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

Создайте LinearLayout внутри HorizontalScrollView, затем динамически создайте imageView и добавьте это изображение в linearLayout.

Пример кода:

 <HorizontalScrollView android:id="@+id/horizontal_scroll" android:layout_width="match_parent" android:layout_height="wrap_content" > <LinearLayout android:id="@+id/linear" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" > </LinearLayout> </HorizontalScrollView> 

В методе onCreate () получите идентификатор linearLayout из xml-файла и добавьте динамически созданный ImageView в linearlayout:

  LinearLayout layout = (LinearLayout) findViewById(R.id.linear); for (int i = 0; i < 10; i++) { ImageView imageView = new ImageView(this); imageView.setId(i); imageView.setPadding(2, 2, 2, 2); imageView.setImageBitmap(BitmapFactory.decodeResource( getResources(), R.drawable.ic_launcher)); imageView.setScaleType(ScaleType.FIT_XY); layout.addView(imageView); } 

Поскольку у нас больше нет виджета Gallery требуется немного DIY-мышки. Вы можете создать горизонтальную прокрутку миниатюрной полосы с помощью HorizontalScrollView и вложенного LinearLayout и динамически добавлять изображения к ней из вашей деятельности:

 <HorizontalScrollView android:layout_width="match_parent" android:layout_height="72dp" android:layout_gravity="bottom" android:background="@color/black"> <LinearLayout android:id="@+id/thumbnails" android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center_vertical" android:orientation="horizontal" android:paddingTop="2dp"/> </HorizontalScrollView> 

Ниже приведен код, приведенный в этом уроке: http://sourcey.com/android-horizontally-scrolling-pan-scan-and-zoom-image-gallery/ . GalleryActivity реализует то, что вы ищете, а также расширяется Запрос, добавив элемент ViewPager для показа выбранного изображения и SubsamplingScaleImageView чтобы вы могли панорамировать, сканировать и масштабировать выбранное изображение:

 package com.sourcey.imagegallerydemo; import android.content.Context; import android.graphics.Bitmap; import android.os.Bundle; import android.support.v4.view.PagerAdapter; import android.support.v7.app.AppCompatActivity; import android.support.v4.view.ViewPager; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import com.bumptech.glide.Glide; import com.bumptech.glide.request.animation.GlideAnimation; import com.bumptech.glide.request.target.SimpleTarget; import com.davemorrissey.labs.subscaleview.ImageSource; import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView; import junit.framework.Assert; import java.util.ArrayList; import butterknife.ButterKnife; import butterknife.InjectView; public class GalleryActivity extends AppCompatActivity { public static final String TAG = "GalleryActivity"; public static final String EXTRA_NAME = "images"; private ArrayList<String> _images; private GalleryPagerAdapter _adapter; @InjectView(R.id.pager) ViewPager _pager; @InjectView(R.id.thumbnails) LinearLayout _thumbnails; @InjectView(R.id.btn_close) ImageButton _closeButton; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_gallery); ButterKnife.inject(this); _images = (ArrayList<String>) getIntent().getSerializableExtra(EXTRA_NAME); Assert.assertNotNull(_images); _adapter = new GalleryPagerAdapter(this); _pager.setAdapter(_adapter); _pager.setOffscreenPageLimit(6); // how many images to load into memory _closeButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d(TAG, "Close clicked"); finish(); } }); } class GalleryPagerAdapter extends PagerAdapter { Context _context; LayoutInflater _inflater; public GalleryPagerAdapter(Context context) { _context = context; _inflater = (LayoutInflater) _context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public int getCount() { return _images.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view == ((LinearLayout) object); } @Override public Object instantiateItem(ViewGroup container, final int position) { View itemView = _inflater.inflate(R.layout.pager_gallery_item, container, false); container.addView(itemView); // Get the border size to show around each image int borderSize = _thumbnails.getPaddingTop(); // Get the size of the actual thumbnail image int thumbnailSize = ((FrameLayout.LayoutParams) _pager.getLayoutParams()).bottomMargin - (borderSize*2); // Set the thumbnail layout parameters. Adjust as required LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(thumbnailSize, thumbnailSize); params.setMargins(0, 0, borderSize, 0); // You could also set like so to remove borders //ViewGroup.LayoutParams params = new ViewGroup.LayoutParams( // ViewGroup.LayoutParams.WRAP_CONTENT, // ViewGroup.LayoutParams.WRAP_CONTENT); final ImageView thumbView = new ImageView(_context); thumbView.setScaleType(ImageView.ScaleType.CENTER_CROP); thumbView.setLayoutParams(params); thumbView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d(TAG, "Thumbnail clicked"); // Set the pager position when thumbnail clicked _pager.setCurrentItem(position); } }); _thumbnails.addView(thumbView); final SubsamplingScaleImageView imageView = (SubsamplingScaleImageView) itemView.findViewById(R.id.image); // Asynchronously load the image and set the thumbnail and pager view Glide.with(_context) .load(_images.get(position)) .asBitmap() .into(new SimpleTarget<Bitmap>() { @Override public void onResourceReady(Bitmap bitmap, GlideAnimation anim) { imageView.setImage(ImageSource.bitmap(bitmap)); thumbView.setImageBitmap(bitmap); } }); return itemView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((LinearLayout) object); } } } 

Полный проект Android работает на Github: https://github.com/sourcey/imagegallerydemo

Пожалуйста, выберите ответ, если у вас есть то, что вы ищете …

См. Рабочую демонстрацию отсюда

С выпуском библиотеки RecyclerView вы можете легко реализовать горизонтальную и вертикальную ориентацию списка. Это стало возможным благодаря использованию LinearLayoutManager, для которого вы можете указать ориентацию горизонтальной или вертикальной, как показано ниже …

  LinearLayoutManager horizontalLayoutManager = new LinearLayoutManager(MainActivity.this, LinearLayoutManager.HORIZONTAL, false); 

Введите описание изображения здесь

Вы можете прочитать больше

Пойдите с HorizontalScrollView вместо ListView или GirdView http://developer.android.com/reference/android/widget/HorizontalScrollView.html

TwoWayView работал хорошо для меня. https://github.com/lucasr/twoway-view/

Документация HorizontalScrollView

Чтобы использовать HorizontalScrollView, у вас должен быть только один ребенок внутри него. То, как я использовал его раньше, с изображениями, такими как то, что вы делаете, – это создание TableLayout и добавление изображений в TableRows. TableLayout может иметь много строк или всего одну строку и много столбцов.

Вы можете добавить ImageViews (или любое другое представление) в каждую строку, а затем, наконец, добавить TableRow в TableLayout. Как только TableLayout будет создан, все, что вам нужно сделать, это:

  //createTable method is where you would loop through the images to add TableLayout table = createTable(rowCount, columnCount); HorizontalScrollView hozView = new HorizontalScrollView(this); hozView.addView(table); setContentView(hozView); 

[Введите описание изображения] [1]

[1]: http://i.stack.imgur.com/OCgSk.png сильный текст

Вы можете использовать Recycler View для создания слайд-изображения

 layoutManager=new LinearLayoutManager(getApplicationContext(),LinearLayoutManager.HORIZONTAL, false); Hor_RecylerView.setLayoutManager(layoutManager); AlphaInAnimationAdapter alphaAdapter = new AlphaInAnimationAdapter(i); Hor_RecylerView.getItemAnimator().setAddDuration(1000); Hor_RecylerView.setAdapter(new SlideInLeftAnimationAdapter(alphaAdapter));