android 横向滚动选择器,Android滚动选择器——水平滚动

本文介绍了如何在Android中创建一个水平滚动的选择器,通过扩展已有滚动选择器,添加相关变量和方法,使得选择器能支持水平滚动。并展示了在不同滚动模式下,如何调整绘制item的方式。
摘要由CSDN通过智能技术生成

前言

前面我们讲解了滚动选择器的实现原理,并实现了字符串滚动选择器和图片选择器。没看过的同学建议先去了解一下:

《Android自定义view——滚动选择器》

《android图片滚动选择器的实现》

这些滚动选择器的滚动方向都是垂直的。今天我们在此基础上增加可以水平滚动的选择器。效果如下:

0818b9ca8b590ca3270a3433284dd417.png

实现

对父类ScrollPickerView进行改进,参照垂直滚动,添加跟水平滑动相关的变量。

private boolean mIsHorizontal = false; // 是否水平滚动

private int mItemHeight = 0; // 每个条目的高度,当垂直滚动时,高度=mMeasureHeight/mVisibleItemCount

private int mItemWidth = 0; // 每个条目的宽度,当水平滚动时,宽度=mMeasureWidth/mVisibleItemCount

private int mItemSize; // 当垂直滚动时,mItemSize = mItemHeight;水平滚动时,mItemSize = mItemWidth

private int mCenterY; // 中间item的起始坐标y(不考虑偏移),当垂直滚动时,y= mCenterPosition*mItemHeight

private int mCenterX; // 中间item的起始坐标x(不考虑偏移),当垂直滚动时,x = mCenterPosition*mItemWidth

private int mCenterPoint; // 当垂直滚动时,mCenterPoint = mCenterY;水平滚动时,mCenterPoint = mCenterX

private float mLastMoveY; // 触摸的坐标y

private float mLastMoveX; // 触摸的坐标X

private int mLastScrollY = 0; // Scroller的坐标y

private int mLastScrollX = 0; // Scroller的坐标x

增加水平滚动后,在不同模式下,drawItem参数的意义相应改变。

/** * 绘制item * *@param canvas *@param data  数据集 *@param position 在data数据集中的位置 *@param relative 相对中间item的位置,relative==0表示中间item,relative<0表示上(左)边的item,relative>0表示下(右)边的item *@param moveLength 中间item滚动的距离,moveLength<0则表示向上(右)滚动的距离,moveLength>0则表示向下(左)滚动的距离 *@param top 当前绘制item的坐标,当垂直滚动时为顶部y的坐标;当水平滚动时为item最左边x的坐标 */

public abstract void

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值