Android小应用----图片的拖动、缩放
来源:互联网 发布:国防军事大数据案例 编辑:程序博客网 时间:2024/04/27 21:14
public class MainActivity extends Activity {private ImageView operImage;private PointF point = new PointF();//记录手指的位置private PointF midPoint = new PointF();//记录手指间的中点的位置private Matrix matrix = new Matrix();//记录拖动和缩放前手指按下的matrixprivate Matrix newMatrix = new Matrix();//记录手指正在拖动和缩放的matrixprivate int type = 0;//操作类型private float pointerDistance;//两个手指的距离private static final int DRAG = 1;//拖动private static final int SCALE = 2;//缩放@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);operImage= (ImageView) findViewById(R.id.before);operImage.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {int action = event.getAction()&MotionEvent.ACTION_MASK;switch (action) {case MotionEvent.ACTION_DOWN:float startX = event.getX();float startY = event.getY();//记录手指的位置point.set(startX, startY);//得到当前图片的位置matrix.set(operImage.getImageMatrix());type = DRAG;//拖动break;case MotionEvent.ACTION_POINTER_1_DOWN://记录图片没有缩放前的大小matrix.set(operImage.getImageMatrix());//记录两个手指的距离pointerDistance = getDistance(event);//记录两个手指距离的中点midPoint= getMidPoint(event);type = SCALE;//缩放break;case MotionEvent.ACTION_MOVE:switch (type) {case DRAG://拖动float newX = event.getX();float newY = event.getY();newMatrix.set(matrix);float dx = newX - point.x;float dy = newY - point.y;newMatrix.postTranslate(dx, dy);break;case SCALE://缩放newMatrix.set(matrix);float nowDistance = getDistance(event);//根据此时的两个手指间的距离除以开始的两个手指间的距离计算缩放比float scale = nowDistance/pointerDistance;//根据中心点进行缩放newMatrix.postScale(scale, scale, midPoint.x, midPoint.y);break;default:break;}break;case MotionEvent.ACTION_UP:type = 0;break;case MotionEvent.ACTION_POINTER_1_UP:type = 0;break;}operImage.setImageMatrix(newMatrix);return true;}});}/* * 计算两个手指的中点 */protected PointF getMidPoint(MotionEvent event) {float x = (event.getX(1) + event.getX(0))/2;float y = (event.getY(1) + event.getY(0))/2;return new PointF(x, y);}/* * 计算两点间的距离 */protected float getDistance(MotionEvent event) {float x = event.getX(0) - event.getX(1);float y = event.getY(0) - event.getY(1);return FloatMath.sqrt(x*x + y*y);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);return true;}}
1 0
- Android小应用----图片的拖动、缩放
- Android的图片缩放、拖动
- Android-实现图片的拖动和缩放
- android Matrix图片的缩放和拖动
- Android实现图片的缩放和拖动
- android点击图片缩放、拖动
- 图片的拉伸缩放拖动
- Android 图片的浏览、缩放、拖动和自动居中
- android 图片的浏览、缩放、拖动和自动居中示例
- Android 图片的浏览、缩放、拖动和自动居中
- Android 图片的浏览、缩放、拖动和自动居中
- Android基于多触控的图片缩放和拖动代码实现
- Android基于多触控的图片缩放和拖动代码实现
- Android对图片的各种平移,缩放,拖动
- Android 实现图片的单点缩放、拖动、旋转
- android开发-图片缩放,拖动功能实现。
- Android实现图片随意拖动、缩放
- Android 实现图片缩放和拖动
- 我2014年的任务
- 猫都能学会的Unity3D Shader入门指南(二)
- RDD专题
- OCP 1Z0 051 38
- iBATIS概论+ORM模型介绍
- Android小应用----图片的拖动、缩放
- 最常去的IT网站(技术类,资讯类,个人博客)
- block(2)
- 【Data Structure & Algorithm】二叉树中和为某值的所有路径
- Ubuntu 12.10中MyEclipse 10.6+下载+安装+破解
- files_struct 与 struct file
- java线程服用技术
- DataContractSerializer 类
- 基于STM32的老人儿童智能监管系统(定位追踪系统设计)