文章标题

来源:互联网 发布:爱网络聊天的男人 编辑:程序博客网 时间: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;}

}