ViewDragHelper简单使用
来源:互联网 发布:淘宝发货地与实际不符 编辑:程序博客网 时间:2024/04/29 10:43
ViewDragHelper的构造器
ViewDragHelper实例化方式为:
mViewDragHelper= ViewDragHelper.create(this, 1.0f,mCallBack);
参数意义:
第一个传 viewgroup对象
第二个是 敏感度
第三个为回调函数与当前viewGroup进行绑定操作
@Override public boolean onInterceptTouchEvent(MotionEvent ev) { return mViewDragHelper.shouldInterceptTouchEvent(ev); } @Override public boolean onTouchEvent(MotionEvent event) { try { mViewDragHelper.processTouchEvent(event); } catch (Exception e) { } return true; }
- 重写ViewDragHelper.Callback里面的方法
ViewDragHelper.Callback mCallback =new ViewDragHelper.Callback(){ //view:当前操作的view //view区分多点触摸的id //返回用来判断那个view可以滑动,true可以滑动,false不可以滑动 @Override public boolean tryCaptureView(View arg0, int pointerId) { return false; //通常写法:return arg0==view1;表示view1可以滑动 } // 当capturedChild被捕获时,调用. 其实就是上面方法return true之后,点击view被调用 @Override public void onViewCaptured(View capturedChild, int activePointerId) { // TODO Auto-generated method stub super.onViewCaptured(capturedChild, activePointerId); } //根据建议值 修正将要移动到的(横向)位置 (重要) // 此时没有发生真正的移动 @Override public int clampViewPositionHorizontal(View child, int left, int dx) {//水平滑动的位置 // TODO Auto-generated method stub //view:当前操作的view //新的位置的建议值, dx 位置变化量 // left= getLeft() + dx // 通常返回被限制后的left // 如:int newLeft= math.min(getWidth()- getPaddingRight(), math.max(left,0+getPaddingLeft)); return left; } //与上面同理,不过是竖直方向的 @Override public int clampViewPositionVertical(View child, int top, int dy) { // TODO Auto-generated method stub return super.clampViewPositionVertical(child, top, dy); } @Override public int getViewHorizontalDragRange(View child) { // 返回拖拽的范围, 不对拖拽进行真正的限制. 仅仅决定了动画执行速度 return super.getViewHorizontalDragRange(child); } @Override public int getViewVerticalDragRange(View child) { // TODO Auto-generated method stub return super.getViewVerticalDragRange(child); } // 当View位置改变的时候, 处理要做的事情 (更新状态, 伴随动画, 重绘界面) // 此时,View已经发生了位置的改变 // 例如:滑动了changeView,同时想要另一个view2跟随,那么可以在这个方法里面调用 //view2.offsetLeftAndRight(dx);再刷新界面 @Override public void onViewPositionChanged(View changedView, int left, int top, int dx, int dy) { // changedView 改变位置的View // left 新的左边值 // dx 水平方向变化量 // 为了兼容低版本, 每次修改值之后, 进行重绘 invalidate(); super.onViewPositionChanged(changedView, left, top, dx, dy); } // 当View被释放的时候, 处理的事情(执行动画) @Override public void onViewReleased(View releasedChild, float xvel, float yvel) { // View releasedChild 被释放的子View // float xvel 水平方向的速度, 向右为+ // float yvel 竖直方向的速度, 向下为+ super.onViewReleased(releasedChild, xvel, yvel); }
- 如果在viewgroup里面需要平滑滑动可以使用:
mViewDragHelper.smoothSlideViewTo(mainLayout, 0, 0);
写法:// 1. 触发一个平滑动画 if(mDragHelper.smoothSlideViewTo(View, finalLeft, 0)){ // 返回true代表还没有移动到指定位置, 需要刷新界面. // 参数传this(child所在的ViewGroup) ViewCompat.postInvalidateOnAnimation(this); }由于内部实现是scroller.startScroll,所以也需要重写computeScroll() @Override public void computeScroll() { if(mViewDragHelper.continueSettling(true)){ ViewCompat.postInvalidateOnAnimation(this); } }
0 0
- ViewDragHelper简单使用
- Android ViewDragHelper简单使用
- ViewDragHelper简单使用
- ViewDragHelper简单使用
- ViewDragHelper 使用
- ViewDragHelper 使用
- ViewDragHelper使用
- ViewDragHelper 使用
- ViewDragHelper使用
- ViewDragHelper的使用
- viewdraghelper的使用
- android viewdraghelper使用
- ViewDragHelper API 的使用
- 使用ViewDragHelper实现slidemenu
- ViewDragHelper的使用介绍
- ViewDragHelper的使用
- ViewDragHelper使用详解
- ViewDragHelper使用介绍
- 【剑指offer】如何通过先序遍历与中序遍历重建二叉树
- 关于css清除浮动
- 为什么我在css中设定的背景图片在浏览的时候不显示?
- 01背包
- Hello CSDN
- ViewDragHelper简单使用
- TimesTen 数据库复制学习:13. 设置复制系统
- 初学者如何查阅自然语言处理(NLP)领域学术资料
- mac Certifying GDB
- Vue.js学习 Item1 --快速入门
- Python 代码风格---指南
- cygwin安装遇到的问题
- httpclient在android studio中用不了
- Git的相关用法