关于viewpager的简单实现引导页

实现简单引导页流程并不复杂,简单分为几个部分:

1.viewpager控件使用

2.viewpager各个页面滑动监听

3.viewpager底部圆点指示器监听

几个需要注意一下的点:viewpager的适配器选择,一般的引导页面存放的都是图片,所以可以重写一个继承PagerAdapter的类即可满足需求,不过值得注意的是在继承类中,除了默认实现的两个方法外还应实现页面生成与销毁的两个方法


如果此时指示器采取画小圆点来标记,则需要写出两个小圆点的形状代码以及选择器控制其颜色:

在drawable文件夹中新建两个shape文件表示其不同状态下的颜色:


其次还有一个状态选择器以供不同状态的颜色替换:


状态选择器的小圆点取决于背景数量,因此最好采用动态创建的方式:


这里需要注意一下,在设置圆点左边距的时候,由于控件为动态创建,应当使用图中代码方式获取layoutParams,否则会引起空指针异常!而具体是否为Linearlayout下的layoutparams取决于控件所在第一级父容器的布局方式。然后为其添加点击事件可以控制viewpager显示页面,可以通过为其设置tag标识而无需添加控件id。


最后就是页面滑动变化监听来改变指示器的状态代码:


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 创建一个新的Activity作为引导,例如GuideActivity。 2. 在GuideActivity的布局文件中添加一个ViewPager2控件。 3. 创建一个适配器类,继承自ViewPager2.Adapter,并实现三个方法:getItemCount()、createViewHolder()和bindViewHolder()。 4. 在getItemCount()方法中返回引导的数量。 5. 在createViewHolder()方法中创建一个View,将其包装在一个ViewHolder中并返回。 6. 在bindViewHolder()方法中设置每一的内容。 7. 在GuideActivity中,将ViewPager2控件与适配器关联,并设置面切换动画。 8. 最后,在GuideActivity中添加一个按钮,用于跳过引导并进入主界面。 以下是示例代码: 1. GuideActivity布局文件: ``` <androidx.viewpager2.widget.ViewPager2 android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 2. 引导适配器类: ``` public class GuideAdapter extends ViewPager2.Adapter<GuideAdapter.ViewHolder> { private List<Integer> images; public GuideAdapter(List<Integer> images) { this.images = images; } @Override public int getItemCount() { return images.size(); } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_guide, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { holder.imageView.setImageResource(images.get(position)); } static class ViewHolder extends RecyclerView.ViewHolder { ImageView imageView; public ViewHolder(@NonNull View itemView) { super(itemView); imageView = itemView.findViewById(R.id.image); } } } ``` 3. 在GuideActivity中使用适配器: ``` public class GuideActivity extends AppCompatActivity { private ViewPager2 viewPager; private GuideAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_guide); viewPager = findViewById(R.id.viewPager); adapter = new GuideAdapter(Arrays.asList(R.drawable.guide_1, R.drawable.guide_2, R.drawable.guide_3)); viewPager.setAdapter(adapter); viewPager.setPageTransformer(new ZoomOutPageTransformer()); // 设置面切换动画 Button skipButton = findViewById(R.id.skip_button); skipButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(GuideActivity.this, MainActivity.class)); // 跳过引导 finish(); } }); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值