如Google所述,gallery类在API级别16中已弃用.
不再支持此小部件.其他水平滚动小部件包括支持库中的HorizontalScrollVIEw和VIEwPager.所以我使用VIEwPager作为gallery类的替代品.
我的目标是最终实现带有文本描述的无限滚动图像VIEwPager.我使用下面的代码来实现图像VIEwPager,其中包含描述每个图像的文本但是如何将无限滚动应用于VIEwPager?
我之前没有使用过VIEwPager,请尽量提供详细的代码.
activity_main.xml中:
<linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="fill_parent" androID:layout_height="fill_parent" androID:orIEntation="vertical"> <androID.support.v4.vIEw.VIEwPager androID:ID="@+ID/myimagepager" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" /> </linearLayout>
custom_pager.xml:
<linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:orIEntation="vertical" androID:gravity="center_horizontal"> <ImageVIEw androID:ID="@+ID/myimage" androID:layout_wIDth="match_parent" androID:layout_height="0dp" androID:layout_margin="5dp" androID:layout_weight="2" /> <TextVIEw androID:ID="@+ID/image_text" androID:layout_wIDth="fill_parent" androID:layout_height="0dp" androID:layout_weight="1"/></linearLayout>
ImagePager:
public class ImagePager extends Activity { @OverrIDe public voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); ImagePagerAdapter adapter = new ImagePagerAdapter(this, imageArra, stringArray ); VIEwPager myPager = (VIEwPager) findVIEwByID(R.ID.myimagepager); myPager.setAdapter(adapter); myPager.setCurrentItem(0); } private int imageArra[] = { R.drawable.a, R.drawable.b,R.drawable.c, R.drawable.d,R.drawable.e,R.drawable.f, R.drawable.g, R.drawable.h, R.drawable.i}; private String[] stringArray = new String[] { "Image a", "Image b","Image c" "Image d","Image e","Image f", "Image g","Image h","Image i"};}
ImagePagerAdapter:
public class ImagePagerAdapter extends PagerAdapter { Activity activity; int imageArray[]; String[] stringArray; public ImagePagerAdapter(Activity act, int[] imgArra, String[] stringArra) { imageArray = imgArra; activity = act; stringArray = stringArra; } public int getCount() { return imageArray.length; } public Object instantiateItem(VIEw collection, int position) { LayoutInflater inflater = (LayoutInflater)collection.getContext ().getSystemService(Context.LAYOUT_INFLATER_SERVICE); VIEw layout = inflater.inflate(R.layout.custom_pager, null); ImageVIEw im=(ImageVIEw) layout.findVIEwByID(R.ID.myimage); im.setimageResource(imageArray[position]); TextVIEw txt=(TextVIEw) layout.findVIEwByID(R.ID.image_text); txt.setText(stringArray[position]); ((VIEwPager) collection).addVIEw(layout, 0); return layout; } @OverrIDe public voID destroyItem(VIEw arg0, int arg1, Object arg2) { ((VIEwPager) arg0).removeVIEw((VIEw) arg2); } @OverrIDe public boolean isVIEwFromObject(VIEw arg0, Object arg1) { return arg0 == ((VIEw) arg1); } @OverrIDe public Parcelable saveState() { return null; }}
解决方法:
我有same problem,但我能找到解决方法 – 代码可以在github找到.
如果将类InfiniteViewPager和InfinitePagerAdapter复制到项目中,则可以通过一些小的更改实现无限(包装)滚动.
在您的Activity中,使用InfinitePagerAdapter包装PagerAdapter:
PagerAdapter adapter = new InfinitePagerAdapter(new ImagePagerAdapter(this, imageArra, stringArray));
将活动XML中的VIEwPager更改为InfiniteVIEwPager:
<com.antonyt.infinitevIEwpager.InfiniteVIEwPager androID:ID="@+ID/myimagepager" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" />
您可以将类重命名为您想要的任何名称.此代码仅在您至少有三个页面时才有效(您的示例代码中有九个,因此它可以正常工作).
总结以上是内存溢出为你收集整理的java – 无限滚动图像ViewPager全部内容,希望文章能够帮你解决java – 无限滚动图像ViewPager所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)