ViewDragHelper 使用
2015-08-20 15:23
281 查看
ViewDragHelper 是谷歌2013年i/o大会上提出的,统一了view 的拖动处理,ViewDragHelper。
使用ViewDragHelper场景:
一般是view需要滑动拖拽,比如slidingmenu, listview item左右滑动效果等等。写在自定义的view中。
使用ViewDragHelper 步骤:
1,创建ViewDragHelper
View Code
2,重写view onInterceptTouchEvent
public boolean onInterceptTouchEvent(MotionEvent ev) { return viewDragHelper.shouldInterceptTouchEvent(ev); }
3,重写view onTouchEvent
4, 若需要动画 重写view computeScroll
ViewDragHelper 重要方法:
onViewCaptured 捕获到view时回调
clampViewPositionHorizontal view可移动的横向边界控制
clampViewPositionVertical view可移动的纵向边界控制
onViewReleased 手指释放时调用此方法
onEdgeDragStarted 边界拖动时调用
getViewHorizontalDragRange 横向可拖动的范围 当子view可以抢到焦点时,导致不能拖动时,需要重写此方法。
getViewVerticalDragRange 同上
onViewDragStateChanged 状态发生变化时回调
onViewPositionChanged 当拖动view的位置发生改变时回调
onEdgeTouched 触摸到边界时回调
使用ViewDragHelper场景:
一般是view需要滑动拖拽,比如slidingmenu, listview item左右滑动效果等等。写在自定义的view中。
使用ViewDragHelper 步骤:
1,创建ViewDragHelper
ViewDragHelper create(ViewGroup forParent, Callback cb) ViewDragHelper create(ViewGroup forParent, float sensitivity, Callback cb)
View Code
2,重写view onInterceptTouchEvent
public boolean onInterceptTouchEvent(MotionEvent ev) { return viewDragHelper.shouldInterceptTouchEvent(ev); }
3,重写view onTouchEvent
public boolean onTouchEvent(MotionEvent event) { viewDragHelper.processTouchEvent(event); return true; }
4, 若需要动画 重写view computeScroll
if (viewDragHelper.continueSettling(true)) { invalidate(); }
ViewDragHelper 重要方法:
tryCaptureView 捕获view 判断哪些view响应一系列事件
onViewCaptured 捕获到view时回调
clampViewPositionHorizontal view可移动的横向边界控制
clampViewPositionVertical view可移动的纵向边界控制
onViewReleased 手指释放时调用此方法
onEdgeDragStarted 边界拖动时调用
getViewHorizontalDragRange 横向可拖动的范围 当子view可以抢到焦点时,导致不能拖动时,需要重写此方法。
getViewVerticalDragRange 同上
onViewDragStateChanged 状态发生变化时回调
onViewPositionChanged 当拖动view的位置发生改变时回调
onEdgeTouched 触摸到边界时回调
相关文章推荐
- 设置vmware与主机IP同网段
- Android学习JNI,使用JNI实现字符串加密
- windows远程登录全屏
- Android物理键监听
- haproxy 80跳转8080端口
- WINSERVER 2008 上安装MONGODB 64位
- metasploit 中文系统安装失败问题
- hdu 4291 2012成都赛区网络赛 矩阵快速幂 ***
- php获得网站根目录的几个方法
- Xamarin 开发常见问题
- Inside Code Signing
- The Falling Leaves
- 小结-sprintf()
- Atitit. 软件设计 模式 变量 方法 命名最佳实践 vp820 attilax总结命名表大全
- activity的启动模式和表示位
- POJ3261-哈希
- Atitit. 软件设计 模式 变量 方法 命名最佳实践 vp820 attilax总结命名表大全
- sublime text侧边栏
- 选择排序
- 指针常量和常量指针