ViewDragHelper使用
2016-05-20 17:15
302 查看
ViewDragHelper使用
public class MyViewGroup extends ViewGroup { //viewDragHelper private ViewDragHelper dragHelper; //viewDragHelper的callback回调,这里是处理滑动的主要回调方法 private ViewDragHelper.Callback callback=new ViewDragHelper.Callback() { private View childview; //viewgroup哪一个子view处理滑动监听事件 @Override public boolean tryCaptureView(View child, int arg1) { // TODO Auto-generated method stub return child==childview; } //处理水平方向滑动 @Override public int clampViewPositionHorizontal(View child, int left, int dx) { // TODO Auto-generated method stub return super.clampViewPositionHorizontal(child, left, dx); } //处理垂直方向滑动 @Override public int clampViewPositionVertical(View child, int top, int dy) { // TODO Auto-generated method stub return super.clampViewPositionVertical(child, top, dy); } //子view位置改变回调,经常在此回调方法中实现缩放控件大小的操作 @Override public void onViewPositionChanged(View changedView, int left, int top, int dx, int dy) { // TODO Auto-generated method stub super.onViewPositionChanged(changedView, left, top, dx, dy); } @Override public void onViewCaptured(View capturedChild, int activePointerId) { // TODO Auto-generated method stub super.onViewCaptured(capturedChild, activePointerId); } //松开时的回调 @Override public void onViewReleased(View releasedChild, float xvel, float yvel) { // TODO Auto-generated method stub super.onViewReleased(releasedChild, xvel, yvel); } }; public MyViewGroup(Context context) { super(context); dragHelper = ViewDragHelper.create(this, null); } //让ViewDragHelper处理拦截事件,必须调用 @Override public boolean onInterceptTouchEvent(MotionEvent ev) { // TODO Auto-generated method stub return dragHelper.shouldInterceptTouchEvent(ev); } //让ViewDragHelper处理触摸事件,必须调用 @Override public boolean onTouchEvent(MotionEvent event) { // TODO Auto-generated method stub dragHelper.processTouchEvent(event); return super.onTouchEvent(event); } //ViewDragHelper基于scroller,需要实现此方法处理。 @Override public void computeScroll() { // TODO Auto-generated method stub if(dragHelper.continueSettling(true)) { ViewCompat.postInvalidateOnAnimation(this); } } @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { // TODO Auto-generated method stub } }
相关文章推荐
- Nosql知识点
- Xen虚拟机快照技术介绍
- Git撤销暂存区stage中的内容
- 监听者
- mybatis 注意问题
- sun.misc.Unsafe's APIs
- Flexbox布局(1)
- ElasticSearch索引构建速度调优
- QDockWidget
- 自定义控件的设计
- 浅谈CountDownLatch类
- php图片裁剪函数
- 搭建JavaWeb服务器
- 监视鼠标点击了左键还是右键
- 深入Java集合学习系列:HashSet的实现原理
- 制作更生动的演示文档
- ffmpeg超详细综合教程二——为直播流添加滤镜
- JavaScript中的跨浏览器事件操作的基本方法整理
- Caffe代码与架构介绍
- Android 之 ContentProvider 与 ContentResolver