一个简单的滚轮选取控件
来源:互联网 发布:易语言qq炫舞辅助源码 编辑:程序博客网 时间:2024/05/19 16:34
网上有很多滑动选取的控件,比如Android-wheel,github地址,本文只是记录下以前写过的类似控件的思路,不适合实际项目使用。
先来讲讲思路,我这样重复造轮子不太好,而且实现的功能也比较简陋,不过还是打算写下来,记录一下自己成长的过程。
控件中准备将控件中的控件项通过onDraw()中的drawText()绘制出来,准备用一个数字values[]来保存item项的值。那么问题来了,我们要怎么判断该绘制哪几个item?
分两种情况讨论,
1,静止状态:
用一个index来保存当前item在数组中的游标位置,只需要绘制游标左右两项就可以了。
for (int i = -1; i <= 1; i++) { canvas.drawText(values[getIndex(index + i)] + "", centerX, calBaseline(TOP * (i + 1), TOP * (i + 1) + TEXT_HEIGHTPX, paint), paint);}
2,滑动状态:
在滑动过程中,随时更新游标的位置,
changY为相对上一次静止位置滑动的距离(矢量)
index = getIndex(lastIndex - Math.round((float) changeY / TEXT_HEIGHTPX));
记录上一次静止状态的lastIndex,由lastIndex左右遍历,画出屏幕区域内的item。
int indexTop = TOP + changeY; int top; int i = -1; while ((top = indexTop + TEXT_HEIGHTPX * i) < 3 * TEXT_HEIGHTPX) { int newIndex = getIndex(lastIndex + i); if (newIndex == index) { paint.setTextSize(TEXT_SIZE_BIG); } else { paint.setTextSize(TEXT_SIZE); } canvas.drawText(values[newIndex] + "", centerX, calBaseline(top, top + TEXT_HEIGHTPX, paint), paint); i++; } i = 1; while ((top = indexTop + TEXT_HEIGHTPX * i) > -TEXT_HEIGHTPX) { int newIndex = getIndex(lastIndex + i); if (newIndex == index) { paint.setTextSize(TEXT_SIZE_BIG); } else { paint.setTextSize(TEXT_SIZE); } canvas.drawText(values[newIndex] + "", centerX, calBaseline(top, top + TEXT_HEIGHTPX, paint), paint); i--;
下载地址
0 0
- 一个简单的滚轮选取控件
- 日期选取器、单滚轮选取器、多滚轮选取器、滚轮内容根据环境变化、自定义选取器创建一个简单游戏( 抽奖机 )
- android 简单的滚轮控件
- iOS开发-UI控件:UIDatePicker日期/时间选取器(滚轮)
- UIPickerView 选取器(滚轮)
- 滚轮控件
- wpf选取文件夹的控件
- C#控件ID的选取
- 发布一个自己写的PrintPreviewControl自定义控件,支持鼠标滚轮,源代码下载
- 发布一个自己写的PrintPreviewControl自定义控件,支持鼠标滚轮,源代码下载
- 发布一个自己写的PrintPreviewControl自定义控件,支持鼠标滚轮,源代码下载
- android 仿IOS的滚轮选择控件
- 仿ios的滚轮选择控件
- winfrom-容器控件对象的滚轮事件
- 一个简单的模版控件
- 一个简单的登陆控件
- 一个简单的日历控件
- 一个简单的分页控件
- <Android>LinearLayout比例设置
- STM32有关USART的配置函数
- 第四周上机实践项目1-三角形类的构造函数(默认构造函数)
- 用jsp:include控制动态内容
- 关于Android中FontMetrics的几个属性讲解
- 一个简单的滚轮选取控件
- Monkey原理初步和改良优化--Android自动化测试学习历程
- atoi函数源代码
- 学习Markdown
- 选项卡(TabHost)的功能和用法
- Matlab求方差,均值
- matlab图像分割算法源码
- Android 深入ViewPager实现类京东商城首页广告效果
- net.sf.json.JSONException: There is a cycle in the hierarchy