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

本文介绍如何在Android中创建自定义滚动选择器,主要用于数据列表中的快捷选择,如日期选择。通过讲解实现原理、绘制过程以及利用Scroller类进行滚动操作,展示了一个实现滚动选择器的实例,并提供了完整代码的GitHub链接。
摘要由CSDN通过智能技术生成

滚动选择器主要用于在数据列表中快速选择其中一条数据,比如日期选择.首先给大伙看看最终的实现效果:




实现原理

  • 绘制
代码中定义了几个重要的变量:
private int mVisibleItemCount = 3; // 可见的item数量
private int mSelected; // 当前选中的item下标
private int mItemHeight = 0; // 每个条目的高度 = mMeasureHeight/mVisibleItemCount
private int mCenterY; // 中间item的起始坐标y = mCenterPosition*mItemHeight
private float mMoveLength = 0; // item移动长度,负数表示向上移动,正数表示向下移动



通过上图可发现,这几个变量决定了滚动选择器中每个条目的绘制位置

protected void onDraw(Canvas canvas) {
        // 中间item
        mPaint.setColor(mCenterItemBackground);
        float y = mCenterY;
        canvas.drawRect(0, y, getWidth(), y + mItemHeight, mPaint);
        // 传入位置信息,绘制item
        drawItem(canvas, mData, mSelected, 0, mMoveLength, mCenterY + mMoveLength);

        int length = Math.max(mCenterPosition, mVisibleItemCount - mCenterPosition);
        int positon;
        // 上下两边
        for (int i = 1; i <= length && i <= mData.size(); i++) {
            if (i <= mCenterPosition + 1) { // 上面的items,相对位置为 -i
                positon = mSelected - i < 0 ? mData.size() + mSelected - i
   
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值