一个简单的缩放 拖动实现
来源:互联网 发布:留学新加坡的利弊知乎 编辑:程序博客网 时间:2024/05/29 12:05
public class Gesture { private boolean isFirst; private int mode; private static final int DRAG = 1; private static final int MOVE = 2; private static final int NONE = 0; private float oldDis; private float newDis; private IGesture gesture; private float oldX; private float oldY; private float newX; private float newY; private boolean result; private int status; private static final int LEFT = 1; private static final int BOTTOM = 4; private static final int UP = 3; private static final int RIGHT = 2; private static final int ZOOMIN = 5; private static final int ZOOMOUT = 6; public Gesture(IGesture gesture) { this.gesture = gesture; } public boolean gesture(MotionEvent event) { switch (event.getAction() & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: mode = DRAG; oldX = event.getRawX(); oldY = event.getRawY(); result = true; break; case MotionEvent.ACTION_UP: if (mode == MOVE) { } else { switch (status) { case 0: break; case LEFT: gesture.stopLeft(); break; case RIGHT: gesture.stopRight(); break; case BOTTOM: gesture.stopBottom(); break; case UP: gesture.stopUp(); break; } isFirst = true; } mode=NONE; result = true; break; case MotionEvent.ACTION_POINTER_DOWN: mode = MOVE; oldDis = spacing(event); result = true; break; case MotionEvent.ACTION_POINTER_UP: switch (status) { case ZOOMIN: gesture.stopZoomIn(); break; case ZOOMOUT: gesture.stopZoomOut(); break; } mode = NONE; result = true; break; case MotionEvent.ACTION_MOVE: if (isFirst) { switch (mode) { case NONE: break; case DRAG: newX = event.getRawX(); newY = event.getRawY(); if (newX - oldX > 0 && Math.abs(newX - oldX) > Math.abs(newY - oldY)) { //toRight gesture.moveRight(); status = RIGHT; } else if (newX - oldX < 0 && Math.abs(newX - oldX) > Math.abs(newY - oldY)) { //toLeft gesture.moveLeft(); status = LEFT; } else if (newY - oldY > 0 && Math.abs(newY - oldY) > Math.abs(newX - oldX)) { //toBottom gesture.moveBottom(); status = BOTTOM; } else if (newY - oldY < 0 && Math.abs(newY - oldY) > Math.abs(newX - oldX)) { gesture.moveUp(); status = UP; } break; case MOVE: newDis = spacing(event); if (newDis - oldDis > 1) { status = ZOOMOUT; gesture.zoomOut(); } else if (oldDis - newDis > 1) { status = ZOOMIN; gesture.zoomIn(); } break; } isFirst = false; result = true; break; } else { //只需要接受第一次move即可 后面的move都被忽略 } } return result; } private float spacing(MotionEvent event) { float x = event.getX(0) - event.getX(1); float y = event.getY(0) - event.getY(1); return (float) Math.sqrt(x * x + y * y); }}
IGesture
public interface IGesture { void moveUp(); void moveBottom(); void moveLeft(); void moveRight(); void zoomIn(); void zoomOut(); void stopUp(); void stopBottom(); void stopLeft(); void stopRight(); void stopZoomIn(); void stopZoomOut();}
0 0
- 一个简单的缩放 拖动实现
- 拖动的简单实现
- Android-实现图片的拖动和缩放
- Android实现图片的缩放和拖动
- 一个简单的实现图片缩放的程序
- C# WinForm控件的拖动和缩放的实现
- C# WinForm控件的拖动和缩放的实现
- C# WinForm控件的拖动和缩放的实现
- 用js实现图的缩放和拖动显示,
- Android实现对imageview的拖动以及缩放
- Android实现对imageview的拖动以及缩放
- Android实现对imageview的拖动以及缩放
- Android基于多触控的图片缩放和拖动代码实现
- Android基于多触控的图片缩放和拖动代码实现
- 在WPF中的Canvas上实现控件的拖动、缩放
- 自定义View实现图片的拖动和缩放
- 自定义View实现图片的拖动和缩放
- 自定义ImageView实现图片的拖动、缩放和边界回弹
- SharePoint2016 IT Professional - Project Web App Site
- 识别多行的宏
- 获取并发队列
- js实现文字左右滚动
- pod安装AFNetworking3.0遇到dependency were found, but they required a higher minimum deployment target
- 一个简单的缩放 拖动实现
- OC学习日记Day2:#include、#import和@class的工作原理
- GET和POST的区别
- myeclipse10.7打包war包出错
- js基础效果
- navigator对象及其应用
- CSS中em单位和px单位的区别
- Java NIO:浅析I/O模型
- [正则表达式]开发常用的正则表达式