Options for replacing the deprecated Gallery

35,600

Solution 1

Have you tried coverflow? You can use this. https://github.com/Polidea/android-coverflow Hope this might help you.

or

You can also use page curl for swipping. https://github.com/moritz-wundke/android-page-curl

Solution 2

A good option to replace the Gallery is a ViewPager, works as a listview or gridview, you have to made your own adapter that extends PagerAdater and a layout item. I already use it with this code i attach below, and it works perfectly. good touch response, i hope this can help you out!!!

LAYOUT

<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> 

CLASS CODE

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

        }
    });

ADAPTER

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);
}

}

Solution 3

I used a ViewPager with the it's clipToPadding set to false and equal padding values on the left and the right. This makes a page smaller than the viewpager and center it inside it.

Then I set the viewPager.setPageMargin to a negative value to allow the pages on either side to become visible. This way you have a centered page with others showing.

Then you can also add some fancy animation by setting a PageTransformer on the ViewPager (viewPager.setPageTransformer). I did a rotation and scale using the provided float in the PageTransformer to emulate a carousel like effect.

I hope this is helpful for somebody. Also I think the Gallery was deprecated because the flinging just doesn't feel right. You have no idea which item will be selected after a fling.

Solution 4

Current best solution is RecyclerView

Solution 5

Someone wrote a replacement for gallery that recycles it's views. It's based on the original gallery code, so it should be an improvement. Here's the link: https://github.com/falnatsheh/EcoGallery

Share:
35,600
Todd Davies
Author by

Todd Davies

Political Scientist &amp; Software Engineer.

Updated on July 09, 2022

Comments

  • Todd Davies
    Todd Davies about 2 years

    I am currently using the Gallery widget to display a sliding list of thumbnails. Each thumbnail has a background colour and a text overlay. (It's a colour chooser).

    However as of API version 16, the gallery is deprecated.. As I understand it, phones with API versions greater than 16 aren't guaranteed to have the gallery widget.

    I would use a viewpager, but that only shows one view at a time, and I want to show adjacent views too. A horizontal scroll view may do it, but it won't snap to the nearest option like a gallery will.

    I've looked for existing widgets, and can't find any. Do you have any suggestions as to what widget I should choose?

  • Shadow
    Shadow over 11 years
    You are always wc. @ToddDavies
  • Raanan
    Raanan about 11 years
    android-coverflow extends Gallery, this really isn't a solution.
  • Shihab Uddin
    Shihab Uddin over 10 years
    where i have to start. Need a tuts/link @Pepjin
  • Karl
    Karl about 10 years
    Thanks, works wonderfully. Great smooth touch response, as you wrote. Only the method public AdapterVerGaleria.getItem(int) was something I plain removed as it doesn't seem to serve any purpose.
  • djdance
    djdance about 10 years
    what is ObjectVerGaleria?
  • slogan621
    slogan621 over 9 years
    Imported this into my workspace and played with it. Simple, clean, appears to work well. Thanks for this answer!
  • Taiko
    Taiko over 9 years
    More detailed explanation on how to do this : stackoverflow.com/questions/13914609/…
  • Lamorak
    Lamorak about 9 years
    Direct link to a github project with working code mentioned in the answer @Taiko shared.
  • Rarw
    Rarw over 8 years
    How does that == comparison work in isViewFromObject? I guess it never gets called because you'd have to use equals() to compare
  • Totalys
    Totalys over 8 years
    There is a lot of gaps in this code: lista_galeria not defined, class ObjectVerGaleria not defined, listImages not defined. Make sure to post a working solution.
  • Abandoned Cart
    Abandoned Cart about 7 years
    Not only does this extend the deprecated method, it is buggy on versions of Android after the deprecation. Please see github.com/Polidea/android-coverflow/issues
  • Maher Abuthraa
    Maher Abuthraa about 7 years
    Please to elaborate your solution .. how RV is the solution ?