ViewDragHelper使用模板
来源:互联网 发布:linux route 修改 编辑:程序博客网 时间:2024/06/14 05:15
public class DragViewGroup extends FrameLayout { private ViewDragHelper mViewDragHelper; private View mMenuView, mMainView; private int mWidth; public DragViewGroup(Context context) { super(context); initView(); } public DragViewGroup(Context context, AttributeSet attrs) { super(context, attrs); initView(); } public DragViewGroup(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initView(); } @Override protected void onFinishInflate() { super.onFinishInflate(); mMenuView = getChildAt(0); mMainView = getChildAt(1); } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); mWidth = mMenuView.getMeasuredWidth(); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { return mViewDragHelper.shouldInterceptTouchEvent(ev); } @Override public boolean onTouchEvent(MotionEvent event) { //将触摸事件传递给ViewDragHelper,此操作必不可少 mViewDragHelper.processTouchEvent(event); return true; } private void initView() { mViewDragHelper = ViewDragHelper.create(this, callback); } private ViewDragHelper.Callback callback = new ViewDragHelper.Callback() { // 何时开始检测触摸事件 @Override public boolean tryCaptureView(View child, int pointerId) { //如果当前触摸的child是mMainView时开始检测 return mMainView == child; } // 触摸到View后回调 @Override public void onViewCaptured(View capturedChild, int activePointerId) { super.onViewCaptured(capturedChild, activePointerId); } // 当拖拽状态改变,比如idle,dragging @Override public void onViewDragStateChanged(int state) { super.onViewDragStateChanged(state); } // 当位置改变的时候调用,常用与滑动时更改scale等 @Override public void onViewPositionChanged(View changedView, int left, int top, int dx, int dy) { super.onViewPositionChanged(changedView, left, top, dx, dy); } // 处理垂直滑动 @Override public int clampViewPositionVertical(View child, int top, int dy) { return 0; } // 处理水平滑动 @Override public int clampViewPositionHorizontal(View child, int left, int dx) { return left; } // 拖动结束后调用 @Override public void onViewReleased(View releasedChild, float xvel, float yvel) { super.onViewReleased(releasedChild, xvel, yvel); //手指抬起后缓慢移动到指定位置 if (mMainView.getLeft() < 500) { //关闭菜单 //相当于Scroller的startScroll方法 mViewDragHelper.smoothSlideViewTo(mMainView, 0, 0); ViewCompat.postInvalidateOnAnimation(DragViewGroup.this); } else { //打开菜单 mViewDragHelper.smoothSlideViewTo(mMainView, 300, 0); ViewCompat.postInvalidateOnAnimation(DragViewGroup.this); } } }; @Override public void computeScroll() { if (mViewDragHelper.continueSettling(true)) { ViewCompat.postInvalidateOnAnimation(this); } }}
0 0
- ViewDragHelper使用模板
- ViewDragHelper 使用
- ViewDragHelper 使用
- ViewDragHelper使用
- ViewDragHelper 使用
- ViewDragHelper使用
- ViewDragHelper的使用
- viewdraghelper的使用
- android viewdraghelper使用
- ViewDragHelper API 的使用
- 使用ViewDragHelper实现slidemenu
- ViewDragHelper的使用介绍
- ViewDragHelper的使用
- ViewDragHelper使用详解
- ViewDragHelper使用介绍
- ViewDragHelper的使用
- ViewDragHelper的使用
- ViewDragHelper的使用
- jdbc入门(二)
- ajax 定时操作数据库
- PHP JS 进度条
- 【转】夏普考虑在广州建世界最大液晶显示器厂
- Nginx基本配置讲解
- ViewDragHelper使用模板
- Java概述
- Ultraedit Mac(文本编辑器)V15.1.0.1 最新中文破解版
- Hello World
- Debian 8 x86_64 Java 使用 NRSerialPort 开发串口通信
- Apache HTTP Server 2.2.31在Windows下安装和简单配置
- Linux curl命令学习
- Git整理与秘技
- MTK串口通信调试