ViewDragHelper使用介绍
来源:互联网 发布:用数据做电泳图 编辑:程序博客网 时间:2024/05/15 05:12
- ViewDragHelper是用来干什么的
- 我们看一下官网介绍
- 1.他是自定义ViewGroup的工具类
- 2.提供了操作和状态常量
- 3.拖放和恢复
- Callback
- Callback是ViewDragHelper的内部类
- 1.是子类父类沟通的桥梁
- 2.管理拖放的范围
- 3.为ViewDragHelper提供了事件和方法
- 具体使用
- 1.实现Callback的方法
- 2.通过ViewDragHelper.create创建对象,并传入callback
- 3.在onInterceptTouchEvent中shouldInterceptTouchEvnet
- 4.在onTouchEvent中接受 processTouchEvent(event)
- CallBack方法介绍
- 1.onViewDragStateChanged 状态改变的时候调用
- 2.onViewPositionChanged 位置改变
- 3.onViewCapturedziView捕获
- 4.onViewReleased释放View
- 5.onEdgeToched边界触摸
- 6.onEdgeLock边界锁
- 7.tryCaptureView是否捕获是关键
- 8.clampViewPostionHorzontal/Vertical 限制水平或者垂直的距离
- 具体代码
public class DragView extends FrameLayout { private View mCurrent; private boolean b; private ViewDragHelper.Callback callback = new ViewDragHelper.Callback() { //这里是捕获的关键 @Override public boolean tryCaptureView(View child, int pointerId) { return true; } //捕获view @Override public void onViewCaptured(View capturedChild, int activePointerId) { String tag = (String) capturedChild.getTag(); switch (tag) { case "1": break; case "2": break; } } //限制水平方向 @Override public int clampViewPositionHorizontal(View child, int left, int dx) { return left; } // 限制垂直方向 @Override public int clampViewPositionVertical(View child, int top, int dy) { return top; } @Override public void onViewReleased(View releasedChild, float xvel, float yvel) { super.onViewReleased(releasedChild, xvel, yvel);// 这里是回到原来的位置 helper.settleCapturedViewAt(px / 2, py / 2); invalidate(); } }; private final int px; private final int py; @Override public void computeScroll() {// 配合回到原来的位置 if (helper.continueSettling(true)) { invalidate(); } } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); int mode = MeasureSpec.getMode(widthMeasureSpec); int sizeW = MeasureSpec.getSize(widthMeasureSpec); int sizeH = MeasureSpec.getSize(heightMeasureSpec); System.out.println(sizeH); } private final ViewDragHelper helper; @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) public DragView(Context context, AttributeSet attrs) { super(context, attrs); helper = ViewDragHelper.create(this, 1f, callback); Configuration configuration = context.getResources().getConfiguration();// px = dip * density/160 int screenWidthDp = configuration.screenWidthDp; int screenHeightDp = configuration.screenHeightDp; px = screenWidthDp * configuration.densityDpi / 160;// 得到当前屏幕的密度 py = screenHeightDp * configuration.densityDpi / 160; } @Override public boolean onTouchEvent(MotionEvent event) {// 处理时间 helper.processTouchEvent(event); return true; } @Override public boolean onInterceptTouchEvent(MotionEvent ev) {// helper拦截事件 return helper.shouldInterceptTouchEvent(ev); }}
1 0
- ViewDragHelper的使用介绍
- ViewDragHelper使用介绍
- ViewDragHelper使用介绍
- android ViewDragHelper介绍与使用
- ViewDragHelper 使用
- ViewDragHelper 使用
- ViewDragHelper使用
- ViewDragHelper 使用
- ViewDragHelper使用
- android ViewDragHelper介绍
- ViewDragHelper的使用
- viewdraghelper的使用
- android viewdraghelper使用
- ViewDragHelper API 的使用
- 使用ViewDragHelper实现slidemenu
- ViewDragHelper的使用
- ViewDragHelper使用详解
- ViewDragHelper的使用
- Spring Boot启动报错:Failed to instantiate [ClassName]: No default constructor found;
- android 项目学习随笔十六( 广告轮播条播放)
- ListView自定义适配器
- android 项目学习随笔十七(ListView、GridView显示组图)
- 微信小程序(六):列表上拉加载下拉刷新
- ViewDragHelper使用介绍
- android 项目学习随笔十八(三级缓存)
- java源文件结构
- Java23种设计模式的研究之一(工厂方法模式(Factory Method))
- android 项目学习随笔十九(MD5)
- PHP抓取百度搜索结果页面的【相关搜索词】并存储
- android 项目学习随笔二十(屏幕适配)
- Android 小白必读
- firefox的同步确实好用呀