ViewPager及ViewPager

在fragment中使用ViewPager实现轮播图效果能够实现自动轮播在轮播过程中底部指示器跟着滑动点击指示器实现viewpager滑动

ViewPager轮播图组件随处可见了,viewpager可以实现左右滑动,viewpager实现fragment切换是目前大部分app所需要使用的技术。常见的轮播图和引导页使用viewpager完成,能够实现自动轮播

/**

* 实现底部切换:viewpager+fragment切换

1.容器:listview----》viewpager

2.适配器:baseAdapter-----》FragmentPagerAdapter

3.数据源:List<实体类>----》List<Fragment>

*/

public class MainActivity extends AppCompatActivity {

private ViewPager viewPager;

private MyPagerAdapter myPagerAdapter;

private List<Fragment> list;

private RadioGroup radioGroup;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

radioGroup = findViewById(R.id.group);

viewPager = findViewById(R.id.view_pager);

list = new ArrayList<>();

list.add(new OneFragment());

list.add(new TwoFragment());

list.add(new ThreeFragment());

myPagerAdapter = new MyPagerAdapter(getSupportFragmentManager(),list);

viewPager.setAdapter(myPagerAdapter);

//点击底部切换fragment

radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

@Override

public void onCheckedChanged(RadioGroup group, int checkedId) {

switch (checkedId){

case R.id.rb1:

viewPager.setCurrentItem(0);

break;

case R.id.rb2:

viewPager.setCurrentItem(1);

break;

case R.id.rb3:

viewPager.setCurrentItem(2);

break;

}

}

});

//滑动viewpager底部切换

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {

@Override

public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

}

@Override

public void onPageSelected(int position) {

switch (position){

case 0:

radioGroup.check(R.id.rb1);

break;

case 1:

radioGroup.check(R.id.rb2);

break;

case 2:

radioGroup.check(R.id.rb3);

break;

}

}

@Override

public void onPageScrollStateChanged(int state) {

}

});

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ViewPager2是Google推出的新版本ViewPager,它具有更多的可定制性,支持用户在应用程序中更轻松地实现垂直和水平滚动视图。可以在Android官方文档中找到ViewPager2的示例代码和使用说明。 ### 回答2: ViewPager2是一个用于展示多个页面的Android控件,它是ViewPager的更新版本。下面是一个ViewPager2的示例和代码。 首先,在XML布局文件中添加ViewPager2控件,示例如下: ``` <androidx.viewpager2.widget.ViewPager2 android:id="@+id/viewPager2" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 然后,在Activity或Fragment中,通过以下代码找到ViewPager2控件,并设置适配器: ``` ViewPager2 viewPager2 = findViewById(R.id.viewPager2); ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager(), getLifecycle()); viewPager2.setAdapter(adapter); ``` 在适配器ViewPagerAdapter中,需要继承FragmentStateAdapter类,并重写getItemCount()和createFragment()方法。示例如下: ``` public class ViewPagerAdapter extends FragmentStateAdapter { private static final int NUM_PAGES = 3; public ViewPagerAdapter(@NonNull FragmentManager fragmentManager, @NonNull Lifecycle lifecycle) { super(fragmentManager, lifecycle); } @Override public int getItemCount() { return NUM_PAGES; } @NonNull @Override public Fragment createFragment(int position) { return new MyFragment(); // 自定义Fragment类 } } ``` 最后,在自定义Fragment类中,可以添加需要显示的视图和逻辑。示例如下: ``` public class MyFragment extends Fragment { @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_my, container, false); // 添加视图和逻辑 return rootView; } } ``` 以上就是一个简单的ViewPager2示例和代码。使用ViewPager2,你可以通过切换不同的页面来展示不同的内容,这对于实现引导页、图片轮播等功能非常有用。 ### 回答3: ViewPager2是AndroidX库中的一个组件,用于实现可滑动的页面切换效果。它是ViewPager的升级版,提供了更多的功能和更好的性能。 要使用ViewPager2,首先需要在app的build.gradle文件中添加依赖: ```groovy implementation 'androidx.viewpager2:viewpager2:1.1.0-alpha01' ``` 然后,在XML布局文件中,可以使用以下代码定义一个简单的ViewPager2: ```xml <androidx.viewpager2.widget.ViewPager2 android:id="@+id/viewPager2" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 接下来,在Java代码中,可以使用以下代码示例来设置ViewPager2的适配器和数据源: ```java ViewPager2 viewPager2 = findViewById(R.id.viewPager2); viewPager2.setAdapter(new MyAdapter()); // 设置适配器 class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private List<String> data = new ArrayList<>(); public MyAdapter() { // 初始化数据源 data.add("Page 1"); data.add("Page 2"); data.add("Page 3"); } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { // 创建ViewHolder View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_page, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { // 绑定数据 holder.textView.setText(data.get(position)); } @Override public int getItemCount() { // 返回数据源的长度 return data.size(); } class ViewHolder extends RecyclerView.ViewHolder { TextView textView; public ViewHolder(@NonNull View itemView) { super(itemView); textView = itemView.findViewById(R.id.textView); } } } ``` 在上述示例中,我们创建了一个自定义的适配器`MyAdapter`来提供数据和对应的布局。这里使用了一个简单的RecyclerView作为ViewPager2的适配器,并通过重写`onCreateViewHolder`、`onBindViewHolder`和`getItemCount`等方法来创建ViewHolder和绑定数据。 最后,我们通过`setAdapter`方法将适配器绑定到ViewPager2上,就可以实现一个简单的可滑动页面切换效果。 除了上述示例,ViewPager2还提供了其他的功能,如设置页面间的间距、滑动方向、页面切换动画等,开发者可以根据需求进行定制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值