文章标题
2015-12-17 22:43
387 查看
## 自定义WheelView 竖直滑动选择器 ##
【1】需要的工具类:
import android.graphics.Canvas; //图形画布
import android.graphics.Color; //图形颜色
import android.graphics.ColorFilter; //图形滤色器
import android.graphics.Paint; //图形油漆
import android.graphics.drawable.Drawable; //可绘制Drawable类
import android.util.AttributeSet; //自定义控件方法
import android.view.MotionEvent; //位移事件
【2】主要方法与类:
① 创建WheelView类要继承ScrollView
② 创建监听事件OnWheelViewListener
③ 构造WheelView (param : context,attributeSet,defStyle)
④ 创建偏移量offset,displayItemCount 每页显示数量,selectedIndex 选择指数
⑤ 定义LinearLayout的view属性
⑥ new Runnable 实现多线程
scrollerTask = new Runnable() {
public void run() {
int newY = getScrollY();
if (initialY - newY == 0) { //stopped
final int remainder = initialY % itemHeight;
final int divided = initialY / itemHeight;
if (remainder == 0) {
selectedIndex = divided + offset;
注: remainder 余留部分 divided 分割
⑦ 设置文字的属性
⑧ 获取选中的区域边界
/**
* 获取选中区域的边界
*/
int[] selectedAreaBorder;
private int[] obtainSelectedAreaBorder() {
if (null == selectedAreaBorder) {
selectedAreaBorder = new int[2];
selectedAreaBorder[0] = itemHeight * offset;
selectedAreaBorder[1] = itemHeight * (offset + 1);
【1】需要的工具类:
import android.graphics.Canvas; //图形画布
import android.graphics.Color; //图形颜色
import android.graphics.ColorFilter; //图形滤色器
import android.graphics.Paint; //图形油漆
import android.graphics.drawable.Drawable; //可绘制Drawable类
import android.util.AttributeSet; //自定义控件方法
import android.view.MotionEvent; //位移事件
【2】主要方法与类:
① 创建WheelView类要继承ScrollView
② 创建监听事件OnWheelViewListener
③ 构造WheelView (param : context,attributeSet,defStyle)
④ 创建偏移量offset,displayItemCount 每页显示数量,selectedIndex 选择指数
⑤ 定义LinearLayout的view属性
⑥ new Runnable 实现多线程
scrollerTask = new Runnable() {
public void run() {
int newY = getScrollY();
if (initialY - newY == 0) { //stopped
final int remainder = initialY % itemHeight;
final int divided = initialY / itemHeight;
if (remainder == 0) {
selectedIndex = divided + offset;
注: remainder 余留部分 divided 分割
⑦ 设置文字的属性
⑧ 获取选中的区域边界
/**
* 获取选中区域的边界
*/
int[] selectedAreaBorder;
private int[] obtainSelectedAreaBorder() {
if (null == selectedAreaBorder) {
selectedAreaBorder = new int[2];
selectedAreaBorder[0] = itemHeight * offset;
selectedAreaBorder[1] = itemHeight * (offset + 1);
相关文章推荐
- J2EE框架(Struts&Hibernate&Spring)的理解
- 第十周 项目一 二叉树算法库
- ECharts Java 动态加载数据,echartsjava
- 求二叉树的深度
- appium对获取android webview失败的处理
- Codeforces Round #313 (Div. 2) 560C Gerald's Hexagon(脑洞)
- N皇后问题与回溯法
- HDOJ 2087 剪花布条
- epoll udp server
- mapreduce工作原理
- React事件函数简介
- 关于图像对比度【3】——直方图均衡化的改进
- UE4 模型组件(ModelComponent)
- 关于input[type='checkbox']全选的问题
- 心上莲花次第开系列:爱的代价
- 文章标题
- KMP算法学习
- Beta版本冲刺第七天
- Java学习笔记:GUI基础
- Wireshark 网络抓包工具介绍、应用及一个案例