ViewDragHelper
2015-12-17 21:39
295 查看
import android.content.Context; import android.support.v4.view.ViewCompat; import android.support.v4.widget.ViewDragHelper; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.widget.FrameLayout; /** * Created by Administrator on 2015/12/17. */ public class DragViewGroup extends FrameLayout { private ViewDragHelper mViewDragHelper; private View mMenuView,mMainView; private int mWtdth; 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); mWtdth = mMenuView.getMeasuredWidth(); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { return mViewDragHelper.shouldInterceptTouchEvent(ev); } @Override public boolean onTouchEvent(MotionEvent event) { mViewDragHelper.processTouchEvent(event); return true; } public void initView(){ mViewDragHelper = ViewDragHelper.create(this,callback); } private ViewDragHelper.Callback callback = new ViewDragHelper.Callback() { @Override public boolean tryCaptureView(View child, int pointerId) { return mMainView == child; } @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){ 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); } } }
相关文章推荐
- EditPlus64的安装配置
- Quartz定时任务时间设置
- [LeetCode]Convert Sorted List to Binary Search Tree
- Android如何设置背景透明、开关输入法、改变标题栏颜色、layer-list
- 一张图,给做嵌入式的小伙伴们打鸡血(∩_∩)
- 自己对PretranslateMessage的一点理解
- 支持向量机: Maximum Margin Classifier
- 利用Qt Assistant 定制帮助文档
- 一直以来伴随我的一些学习习惯(part1)
- Android SlidingMenu 开源项目 侧拉菜单的使用(详细配置)
- “杀京东”京东价格监控软件项目开发日志一
- 黑马程序员--C语言自学笔记---06函数简介和简单UNIX指令
- LeetCode——Valid Sudoku
- C++11原子操作性能测试
- 时间标签
- Android SlidingMenu 使用详解
- Mysql插入数据错误:Duplicate entry '一份' for key 'term'
- Operating System-进程间互斥的问题-生产者&&消费者引入
- Scala aggregate
- Cosos 学习笔记——场景