Android 视图拖拽辅助类 ViewDragHelper 的使用
来源:互联网 发布:手机淘宝好评能修改吗 编辑:程序博客网 时间:2024/05/21 22:53
- 简介
视图拖拽辅助类,2013谷歌I/O大会提出,解决控件在界面中的拖拽问题;
- 自定义控件中的使用步骤
1. 创建ViewDragHelper类
这个类在support-v4 jar包里;
创建: ViewDragHelper.create(forParent, sensitive, cb);
//forParent 父控件
//sensitive 敏感度
//cb 回调接口
2. 转交触摸事件 :
由ViewDragHelper判断触摸事件是否应该拦截
由ViewDragHelper处理事件
@Override public boolean onInterceptTouchEvent(MotionEvent ev) { return mHelper.shouldInterceptTouchEvent(ev); } @Override public boolean onTouchEvent(MotionEvent event) { try { mHelper.processTouchEvent(event); } catch (Exception e) { e.printStackTrace(); } return true; }
3. 接受处理的结果 :(重写回调接口cb里的方法)
tryCaptureView( child, pointerId)
//child 被用户拖动的子控件
//pointerId 多点触摸的手指id
返回值:boolean, 界定了child是否可以被拖拽返回拖拽的范围, 返回一个>0的值,决定了动画的执行时长,水平方向是否可以被划开
getViewHorizontalDragRage(child)
(onSizeChanged()当空间尺寸变化的时候变化的时候才调用,也就是在onMeasure之后选择性调用)
(在onSizeChanged()中得到想要的到的拖拽范围)修正子View水平方向的位置,还没有发生真正的移动,
返回值决定了View将会移动到的位置,用这个方法修正位置
clampViewPositionHorizontal(child, left, dx)
//child 被拖拽的子View
//left 建议移动到的位置.
//dx 跟旧得位置的差值
(onFinishInflate() 在所有子控件被加载完时调用,在这个方法里通过getChildAt方法得到子控件对象)
(要保证代码的健壮性在找索引的时候,要注意索引越界,并且孩子必须是ViewGroup的子类,都需要判断一下,抛异常)当空间位置变化时调用,可以做: 伴随动画,状态的更新,事件的回调
onViewPositionChange(changedView, left, tp, dx, dy)
// changeView 位置改变的控件;
// left 控件的左边位置;
// tp 控件的上边位置;
// dx 控件位置变化的x轴增值;
// dy 控件位置变化的y轴增值;
为了兼容低版本,需要手动重绘界面所有内容.Invalidate();决定了松手之后要做的事情
onViewReleased(releasedChild, xvel, yvel)
releasedChild 被释放的子控件
xvel 水平方向的速度,向右为正,向左为负
yvel 竖直方向的速度,向下为正,向上为负//结束动画,走平滑动画
//是否需要触发一个平滑动画
mHelper.smoothSlideViewTo(ChildView, finalLeft, finalTop)
postInvalidateOnAnimation(parentView);
维持动画,调用频率特别高
computeScroll()
mHelper.continueSetting();
- Android 视图拖拽辅助类 ViewDragHelper 的使用
- 强大的视图拖拽助手--ViewDragHelper
- android关于ViewDragHelper的使用
- Android之ViewDragHelper的使用
- 学习笔记:Android ViewDragHelper的使用
- V4包--ViewDragHelper辅助类详解
- android viewdraghelper使用
- Android ViewDragHelper简单使用
- Android ViewDragHelper使用总结
- Android ViewDragHelper 使用详解
- Scroller类和进化版的拖动辅助类ViewDragHelper的一点理解
- ViewDragHelper的使用
- viewdraghelper的使用
- ViewDragHelper API 的使用
- ViewDragHelper的使用介绍
- ViewDragHelper的使用
- ViewDragHelper的使用
- ViewDragHelper的使用
- SharedPreferences存取特殊数据
- 单片机的最简单的几个编程
- C#_MouseDown事件没反应
- 1.模板方法 Template Method
- 【leetcode】83. Remove Duplicates from Sorted List
- Android 视图拖拽辅助类 ViewDragHelper 的使用
- java实现打印直角三角形
- 今日学习感悟
- ubuntu挂载分区问题
- 算法训练 出现次数最多的整数
- java实现打印倒直角三角形
- c语言语句
- java实现打印等腰三角形
- Codeforces 633C Spy Syndrome 2(Trie+暴力)