1、背景
因为要实现的功能比较简单,所以不想用开源库,参考了下开源库,实现一个简单的
2、效果
注:测试用到的图片来源于开眼官方
3、实现
主要依赖ViewPage2,因为ViewPager2已经把大部分功能都写好了,这里只需要把以下两点处理以下就行
- 显示多个Item(左右留空)
- 滑动冲突
代码也比较简单(注:水平方向滑动冲突未测试)
/**
* Description: 一个简单的Banner,只实现左右滑动
* Author : pxq
* Date : 2020/9/26 3:47 PM
*/
class Banner(context: Context, attributeSet: AttributeSet? = null) :
FrameLayout(context, attributeSet) {
private val viewPager2: ViewPager2 = ViewPager2(context)
// 滑动最小距离
private val touchSlop = ViewConfiguration.get(context).scaledTouchSlop / 2
// 处理滑动冲突,记录屏幕按下位置
private var startX = 0f
private var startY = 0f
// 各个Item之间的间隔
private var pageMargin: Int = 0
// 用于显示多个Item(左右padding)
private var bannerPadding: Int =