ViewPager2实现仿抖音竖屏翻页效果

时间:2021-10-15 作者:qvyue

ViewPager和ViewPager2的区别

  • viewPager只支持横向滑动
  • viewPager2支持 RTL 布局,支持竖直方向滚动

实现关键代码:

vBinding.viewPager2.adapter = ViewPagerAdapter()
vBinding.viewPager2.orientation = ViewPager2.ORIENTATION_VERTICAL

国际惯例:先看效果

ViewPager2实现仿抖音竖屏翻页效果

功能实现

1、使用viewBinding绑定布局id

val vBinding = ActivityKotlin11Binding.inflate(layoutInflater)
setContentView(vBinding.root)

2、布局代码

3、Activity代码

/**
 * viewPager2竖屏切换
 */
@Route(path = RouterPath.kotlin11)
class Kotlin11 : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val vBinding = ActivityKotlin11Binding.inflate(layoutInflater)
        setContentView(vBinding.root)
        vBinding.viewPager2.adapter = ViewPagerAdapter()
        vBinding.viewPager2.orientation = ViewPager2.ORIENTATION_VERTICAL
    }
}

4、ViewPagerAdapter代码

/**
 * @data on 4/25/21 11:28 AM
 * @auther KC
 * @describe viewPager适配器
 */
class ViewPagerAdapter : RecyclerView.Adapter() {

    val colorList = ArrayList()

    init {
        colorList.add(R.color.blue)
        colorList.add(R.color.red)
        colorList.add(R.color.green)
        colorList.add(R.color.pink)
    }

    override fun onCreateViewHolder(
        parent: ViewGroup,
        viewType: Int
    ): MyViewHolder {
        val view =
            LayoutInflater.from(parent.context).inflate(R.layout.viewpager_item, parent, false)
        return MyViewHolder(view)
    }

    override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
        holder.mTvTitle?.text = "item " + position;
        holder.itemView.setBackgroundResource(colorList[position]);
    }

    override fun getItemCount(): Int = colorList.size

    class MyViewHolder(itemView: View): RecyclerView.ViewHolder(itemView) {
        var mTvTitle: TextView? = itemView.findViewById(R.id.tvTitle)
    }
}

5、viewPager子布局代码:R.layout.viewpager_item.xml

大功告成!

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。