gpt4 book ai didi

java - 无限滚动图像 ViewPager

转载 作者:搜寻专家 更新时间:2023-10-30 20:55:18 25 4
gpt4 key购买 nike

根据 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 上找到.

如果您复制类 InfiniteViewPagerInfinitePagerAdapter在您的项目中,您可以通过一些小的更改实现无限(环绕)滚动。

在您的 Activity 中,用 InfinitePagerAdapter 包装您的 PagerAdapter:

PagerAdapter adapter = new InfinitePagerAdapter(new ImagePagerAdapter(this, imageArra, stringArray));

将 Activity XML 中的 ViewPager 更改为 InfiniteViewPager:

<com.antonyt.infiniteviewpager.InfiniteViewPager 
android:id="@+id/myimagepager"
android:layout_width="match_parent"
android:layout_height="match_parent" />

您可以将类重命名为您想要的任何名称。此代码仅在您至少有三页时才有效(您的示例代码中有九页,因此它可以正常工作)。

关于java - 无限滚动图像 ViewPager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13668588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com