DoubleViewPager 开源项目教程
DoubleViewPagerHorizontal + Vertical ViewPager项目地址:https://gitcode.com/gh_mirrors/do/DoubleViewPager
项目介绍
DoubleViewPager 是一个基于 ViewPager 的开源项目,旨在提供两个 ViewPager 之间的同步滑动效果。该项目通过自定义 ViewPager 实现,使得在一个 ViewPager 上滑动时,另一个 ViewPager 也能同步进行动画效果,适用于需要展示关联内容的场景。
项目快速启动
1. 克隆项目
首先,克隆 DoubleViewPager 项目到本地:
git clone https://github.com/juliome10/DoubleViewPager.git
2. 导入项目
将项目导入到 Android Studio 中,并同步 Gradle 文件。
3. 配置布局文件
在布局文件中添加两个 ViewPager:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.example.doubleviewpager.DoubleViewPager
android:id="@+id/viewPager1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<com.example.doubleviewpager.DoubleViewPager
android:id="@+id/viewPager2"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
4. 配置适配器
为每个 ViewPager 配置适配器:
public class MyPagerAdapter extends PagerAdapter {
private Context context;
private List<Integer> drawables;
public MyPagerAdapter(Context context, List<Integer> drawables) {
this.context = context;
this.drawables = drawables;
}
@Override
public int getCount() {
return drawables.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
ImageView imageView = new ImageView(context);
imageView.setImageResource(drawables.get(position));
container.addView(imageView);
return imageView;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((ImageView) object);
}
}
5. 设置 ViewPager
在 Activity 中设置 ViewPager 并实现同步滑动:
public class MainActivity extends AppCompatActivity {
private DoubleViewPager viewPager1;
private DoubleViewPager viewPager2;
private MyPagerAdapter adapter1;
private MyPagerAdapter adapter2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager1 = findViewById(R.id.viewPager1);
viewPager2 = findViewById(R.id.viewPager2);
List<Integer> drawables1 = Arrays.asList(R.drawable.image1, R.drawable.image2, R.drawable.image3);
List<Integer> drawables2 = Arrays.asList(R.drawable.image4, R.drawable.image5, R.drawable.image6);
adapter1 = new MyPagerAdapter(this, drawables1);
adapter2 = new MyPagerAdapter(this, drawables2);
viewPager1.setAdapter(adapter1);
viewPager2.setAdapter(adapter2);
viewPager1.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
viewPager2.setCurrentItem(position, true);
}
@Override
public void onPageSelected(int position) {}
@Override
public void onPageScrollStateChanged(int state) {}
});
viewPager2.setOnPageChangeListener(new ViewPager.On
DoubleViewPagerHorizontal + Vertical ViewPager项目地址:https://gitcode.com/gh_mirrors/do/DoubleViewPager