Подтвердить что ты не робот

Варианты замены устаревшей галереи

В настоящее время я использую виджет "Галерея" для отображения скользящего списка миниатюр. Каждый эскиз имеет цвет фона и наложение текста. (Это выбор цвета).

Однако с API версии 16, галерея устарела.. Насколько я понимаю, телефоны с версиями API более 16 не гарантируют наличие виджета галереи.

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

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

4b9b3361

Ответ 2

Хорошая возможность заменить Gallery - это ViewPager, работает как список или gridview, вы должны создать свой собственный адаптер, который расширяет PagerAdater и элемент макета. Я уже использую его с этим кодом, который я прикрепляю ниже, и он отлично работает. хороший ответ касания, я надеюсь, что это может помочь вам!

РАСПОЛ

<android.support.v4.view.ViewPager
    android:id="@+id/gallery_item"
    android:layout_width="fill_parent"
    android:layout_height="709dp"
    android:layout_below="@+id/relative_headerBar"
    >

</android.support.v4.view.ViewPager> 

КЛАСС КЛАССА

private ViewPager gallery;
gallery = (ViewPager) findViewById(R.id.gallery_item);

gallery = (ViewPager) findViewById(R.id.gallery_item);
    lista_galeria = new ArrayList<ObjectVerGaleria>();

    int i=0;
    for(i=0;i<listImages.length;i++)
    {       
        ObjectVerGaleria objV = new ObjectVerGaleria();
        objV.setUrlImg(listImages[i]);  
        lista_galeria.add(objV);
    }
    gallery.setAdapter(new AdapterVerGaleria(ctx, lista_galeria));

    gallery.setOnPageChangeListener(new OnPageChangeListener()
    {

        public void onPageSelected(int pos)
        {
            String pathImage = listImages[pos].toString();

            currentPosFront = pos;
            Log.d("setOnItemSelectedListener>>","path:"+pathImage);

        }

        public void onPageScrolled(int arg0, float arg1, int arg2)
        {
            // TODO Auto-generated method stub

        }

        public void onPageScrollStateChanged(int arg0)
        {
            // TODO Auto-generated method stub

        }
    });

АДАПТЕР

public class AdapterVerGaleria extends PagerAdapter {

private Activity ctx;
private ArrayList<ObjectVerGaleria> dataList;

public AdapterVerGaleria(Activity act, ArrayList<ObjectVerGaleria> lista) {

    ctx = act;
    dataList = lista;
}

public int getCount() {
    return dataList.size();
}

public Object getItem(int pos) {
    return pos;
}

@Override
public Object instantiateItem(View collection, int pos)
{
    ImageView foto = new ImageView(ctx);



        //foto.setLayoutParams(new ViewPager.LayoutParams(Gallery.LayoutParams.FILL_PARENT, Gallery.LayoutParams.FILL_PARENT));
        foto.setScaleType(ImageView.ScaleType.FIT_XY);
        Utils.fetchDrawableOnThread(Utils.getPath(ctx)+"/"+dataList.get(pos).getUrlImg(), foto, true);
        ((ViewPager)collection).addView(foto);


    return foto;
}

@Override
public void destroyItem(View collection, int position, Object view)
{
    ((ViewPager)collection).removeView((ImageView)view);

}

public long getItemId(int pos) {
    return pos;
}



@Override
public boolean isViewFromObject(View view, Object object)
{
    // TODO Auto-generated method stub
    return view == ((ImageView)object);
}

}

Ответ 3

Я использовал ViewPager с его установкой clipToPadding равным false и равным значениям заполнения слева и справа. Это делает страницу меньшей, чем просмотрщик, и центрирует ее внутри.

Затем я устанавливаю viewPager.setPageMargin отрицательному значению, чтобы страницы с каждой стороны стали видимыми. Таким образом, у вас есть центрированная страница с показаниями других.

Затем вы можете добавить некоторую причудливую анимацию, установив PageTransformer на ViewPager (viewPager.setPageTransformer). Я сделал поворот и масштабирование, используя предоставленный поплавок в PageTransformer, чтобы эмулировать эффект карусели.

Надеюсь, это поможет кому-то. Кроме того, я думаю, что Галерея была устаревшей, потому что раскалывание просто не кажется правильным. Вы не знаете, какой элемент будет выбран после броска.

Ответ 4

Кто-то написал замену для галереи, которая перерабатывает его виды. Он основан на исходном коде галереи, поэтому он должен быть улучшен. Здесь ссылка: https://github.com/falnatsheh/EcoGallery

Ответ 5

Лучшее современное решение RecyclerView

Ответ 6

Существует возможность настроить ViewPager для отображения смежных видов, но это не очень просто. Проверьте это - http://commonsware.com/blog/2012/08/20/multiple-view-viewpager-options.html.

Если это не поможет вам попробовать HorizontallScrollView.

Ответ 7

Я думаю, что хорошая идея использует View Pager для замены галереи.