任意移动的ImageView, 可以根据速率来判断是移动还是点击
2016-07-26 17:52
531 查看
public class MyView extends ImageView { float downX, downY; float moveX, moveY; Context mContext; //速度追踪器 VelocityTracker velocityTracker; public MyView(Context context) { super(context); mContext = context; } public MyView(Context context, AttributeSet attrs) { super(context, attrs); mContext = context; setImageResource(R.mipmap.shopping_cart); } @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()){ case MotionEvent.ACTION_DOWN: downX = event.getRawX(); downY = event.getRawY(); if (velocityTracker==null){ velocityTracker = VelocityTracker.obtain(); }else{ velocityTracker.clear(); } velocityTracker.addMovement(event); break; case MotionEvent.ACTION_MOVE: moveX = event.getRawX(); moveY = event.getRawY(); this.setX(getX() + (moveX - downX)); this.setY(getY() + (moveY - downY)); downX = moveX; downY = moveY; velocityTracker.addMovement(event); velocityTracker.computeCurrentVelocity(1000);// 用于计算速度 1000 为毫秒 break; case MotionEvent.ACTION_UP: if (velocityTracker.getXVelocity()==0 && velocityTracker.getYVelocity()==0){ Toast.makeText(mContext,"OnClick...",Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(mContext,"Move...",Toast.LENGTH_SHORT).show(); } Log.i("msg","velocityTracker.getXVelocity()==="+velocityTracker.getXVelocity()); Log.i("msg","velocityTracker.getYVelocity()==="+velocityTracker.getYVelocity()); break; } return true; } }
相关文章推荐
- jquery常用表单&DOM操作方法
- 远程摄像头软件mjpg-streamer使用指南
- HDU-4004-The Frog's Games【二分】
- js字符串作为一个对象类型
- hdu 2222 Keywords Search - Aho-Corasick自动机
- 高可用集群技术之heartbeat应用案例详解(二)
- View的滑动冲突(通用解决方式)
- idea 使用注意
- linux中动态库和静态库
- spring整合hibernate扫描多个不同包下的实体类
- 重学 以太网的mac协议的CSMA/CD
- hdu 5752 Sqrt Bo 水题
- Object中的finalize方法的使用
- Android for arm上的so注入(inject)和挂钩(hook)
- 对象序列化
- 提高Linux工作效率的十大bash技巧
- nginx用户认证
- 微信的redirect_uri参数错误解决办法
- 我与IDEA的不舍情缘
- 利用red5搭建一个简单的流媒体直播系统(ubuntu 12.10)