replace弃用的图库的选项

我正在使用“图库”小部件来显示缩略图的滑动列表。 每个缩略图都有一个背景颜色和一个文本覆盖。 (这是一个颜色select器)。

但是,从API版本16开始,图库已被弃用。 。 据我所知,API版本大于16的手机不保证有图库小部件。

我将使用viewpager,但一次只显示一个视图,我也想显示相邻的视图。 一个水平滚动视图可以做到这一点,但它不会像一个画廊会抓住最近的选项。

我查找了现有的小部件,并找不到任何。 你有什么build议,我应该select什么小工具?

Solutions Collecting From Web of "replace弃用的图库的选项"

你试过coverflow吗? 你可以使用这个。 https://github.com/Polidea/android-coverflow希望这可能会帮助你。

要么

您也可以使用页面curl进行翻页。 https://github.com/moritz-wundke/android-page-curl

一个很好的select来replace画廊是一个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> 

class级代码

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

}

我用了一个ViewPager,它的clipToPadding被设置为false和相等的填充值在左边和右边。 这使得一个页面比viewpager小,并把它放在里面。

然后,我将viewPager.setPageMargin设置为负值,以使两侧的页面可见。 通过这种方式,您可以与其他人展示中心页面。

然后,您也可以通过在ViewPager(viewPager.setPageTransformer)上设置PageTransformer来添加一些奇特的animation。 我使用PageTransformer中提供的浮动来进行旋转和缩放,以模拟旋转木马般的效果。

我希望这有助于某人。 另外我觉得画廊是不赞成的,因为投掷感觉不对。 你不知道哪一个项目将被扔在一个后面。

有人写了一个替代画廊,回收它的意见。 它是基于原画廊代码,所以它应该是一个改进。 这里是链接: https : //github.com/falnatsheh/EcoGallery

有一种方法可以自定义ViewPager来显示相邻的视图,但不是很简单。 检查这个 – http://commonsware.com/blog/2012/08/20/multiple-view-viewpager-options.html

如果它不会帮助你可以尝试Horizo​​ntallScrollView。

目前最好的解决scheme是RecyclerView

我认为是一个好主意,使用视图寻呼机来取代画廊。