文章标题
来源:互联网 发布:爱网络聊天的男人 编辑:程序博客网 时间:2024/06/02 02:59
public class MainActivity extends AppCompatActivity {
private float y1;private float x1;private ImageView mImageView;private final int MODE_DRAG=1;//拖拽private final int MODE_ZOOM=2;//缩放private final int MODE_NONE=0;//默认private int currentMode = MODE_NONE;private double spacing;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initview();}Matrix matrix1=new Matrix();Matrix matrixMOVE=new Matrix();private void initview() { mImageView = (ImageView) findViewById(R.id.tu); mImageView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction() & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN://按下 currentMode = MODE_DRAG; x1 = event.getX();//按下时 X轴的位置 y1 = event.getY(); //按下时 Y轴的位置 matrix1.set(mImageView.getImageMatrix());//将图片 set 进 matrix矩阵中 break; case MotionEvent.ACTION_POINTER_DOWN://双子按下 //开始时 两指之间的距离 spacing = spacing(event); if (spacing>20){//判断两指之间的距离 currentMode=MODE_ZOOM; matrix1.set(mImageView.getImageMatrix()); } break; case MotionEvent.ACTION_MOVE://移动 if (currentMode == MODE_DRAG){// 图片的拖拽 matrixMOVE.set(matrix1); //不断获取移动中的 X Y 轴的坐标 float xn = event.getX();//移动时 X轴的位置 float yn = event.getY();//移动时 Y轴的位置 matrixMOVE.postTranslate(xn- x1,yn- y1); } else if (currentMode == MODE_ZOOM){ //图片的缩放 //缩放中 两指之间的距离 double spacing1 = spacing(event); float a= (float) (spacing1/spacing);//计算缩放的倍数 matrixMOVE.postScale(a,a,XY(event).x,XY(event).y); } break; case MotionEvent.ACTION_UP://抬起 currentMode=MODE_NONE; break; } mImageView.setImageMatrix(matrixMOVE); return true; } });}public double spacing(MotionEvent event){ float x0 = event.getX(0); float x1 = event.getX(1); float y0 = event.getX(0); float y1 = event.getY(1); float x=x0 - x1; float y=y0 - y1; double sqrt = Math.sqrt(x * x + y * y); return sqrt;}public PointF XY(MotionEvent event){ float x0 = event.getX(0); float x1 = event.getX(1); float y0 = event.getX(0); float y1 = event.getX(1); float x=(x0 + x1)/2; float y=(y0 + y1)/2; PointF pointF = new PointF(x, y); return pointF;}
}
阅读全文
0 0
- 文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题 文章标题 文章标题 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 网站前端性能测试报告
- tensorflow 知识点:
- Android--------使用WebView控件显示网络
- Glog
- 京东地址选择器
- 文章标题
- https介绍
- 自定义控件——万能的圆形指示器Indictor
- 文章标题
- javascript异步过程
- guava Cache使用心得
- spring-boot注解整理
- Android中可以做的两件坏事——破解锁屏密码和获取Wifi密码
- mysql远程连接