java– 无限滚动图像ViewPager

java– 无限滚动图像ViewPager,第1张

概述如Google所述,Gallery类在API级别16中已弃用.不再支持此小部件.其他水平滚动小部件包括支持库中的Horizo​​ntalScrollView和ViewPager.所以我使用ViewPager作为Gallery类的替代品.我的目标是最终实现带有文本描述的无限滚动图像ViewPager.我使用下面的代码来实现图像ViewPager,

如Google所述,gallery类在API级别16中已弃用.
不再支持此小部件.其他水平滚动小部件包括支持库中的Horizo​​ntalScrollVIEw和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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1103546.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存