1 //多点触摸的简单应用----拖动图片 2 public class MainActivity extends Activity { 3 private FrameLayout root; 4 private ImageView imageView; 5 6 @Override 7 protected void onCreate(Bundle savedInstanceState) { 8 super.onCreate(savedInstanceState); 9 setContentView(R.layout.activity_main); 10 imageView = (ImageView) findViewById(R.id.image); 11 root = (FrameLayout) findViewById(R.id.container); 12 // 监听触摸事件 13 root.setOnTouchListener(new OnTouchListener() { 14 15 @Override 16 public boolean onTouch(View v, MotionEvent event) { 17 // TODO Auto-generated method stub 18 switch (event.getAction()) { 19 // 触摸按下 20 case MotionEvent.ACTION_DOWN: 21 System.out.println("----->>ACTION_DOWN"); 22 break; 23 // 触摸移动 24 case MotionEvent.ACTION_MOVE: 25 System.out.println("----->>ACTION_MOVE"); 26 // 获取一个触摸点 27 System.out.println(String.format("x:%f,y:%f", event.getX(), 28 event.getY())); 29 // ---------获取一个安卓Android触摸点坐标-----拖动图片---------------- 30 FrameLayout.LayoutParams lp = (LayoutParams) imageView 31 .getLayoutParams(); 32 lp.leftMargin = (int) event.getX(); 33 lp.topMargin = (int) event.getY(); 34 imageView.setLayoutParams(lp); 35 36 System.out.println("===>>触摸点个数" + event.getPointerCount()); 37 // 获取多个触摸点----只能在真机上测试 38 // System.out.println(String.format("x1:%f y1:%f,x2:%f, y2:%f", 39 // event.getX(0),event.getY(0),event.getX(1),event.getY(2))); 40 break; 41 // 触摸抬起 42 case MotionEvent.ACTION_UP: 43 System.out.println("----->>ACTION_UP"); 44 break; 45 46 default: 47 break; 48 } 49 return true;// 后续事件是否需要被触发 50 } 51 }); 52 } 53 54 }
1 //多点触摸的简单应用----实现图片的放大缩小 2 public class MainActivity extends Activity { 3 private FrameLayout root; 4 private ImageView imageView; 5 6 @Override 7 protected void onCreate(Bundle savedInstanceState) { 8 super.onCreate(savedInstanceState); 9 setContentView(R.layout.activity_main); 10 imageView = (ImageView) findViewById(R.id.image); 11 root = (FrameLayout) findViewById(R.id.container); 12 // 监听触摸事件 13 root.setOnTouchListener(new OnTouchListener() { 14 float currentDistance; 15 float lastDistance = -1; 16 17 @Override 18 public boolean onTouch(View v, MotionEvent event) { 19 20 // TODO Auto-generated method stub 21 switch (event.getAction()) { 22 // 触摸按下 23 case MotionEvent.ACTION_DOWN: 24 System.out.println("----->>ACTION_DOWN"); 25 break; 26 // 触摸移动 27 case MotionEvent.ACTION_MOVE: 28 if (event.getPointerCount() >= 2) { 29 // 计算两点之间的距离 30 float offsetX = event.getX(0) - event.getX(1); 31 float offsetY = event.getY(0) - event.getY(1); 32 currentDistance = (float) Math.sqrt(offsetX * offsetX 33 + offsetY * offsetY); 34 } 35 if (lastDistance < 0) {// 初始化 36 lastDistance = currentDistance; 37 } else { 38 if (currentDistance - lastDistance > 5) { 39 System.out.println("放大"); 40 FrameLayout.LayoutParams lp = (LayoutParams) imageView 41 .getLayoutParams(); 42 lp.width = (int) (imageView.getWidth() * 1.1); 43 lp.height = (int) (imageView.getHeight() * 1.1); 44 imageView.setLayoutParams(lp); 45 lastDistance = currentDistance; 46 47 } else if (currentDistance - lastDistance < 5) { 48 System.out.println("缩小"); 49 FrameLayout.LayoutParams lp = (LayoutParams) imageView 50 .getLayoutParams(); 51 lp.width = (int) (imageView.getWidth() * 0.9); 52 lp.height = (int) (imageView.getHeight() * 0.9); 53 imageView.setLayoutParams(lp); 54 lastDistance = currentDistance; 55 } 56 } 57 System.out.println("----->>ACTION_MOVE"); 58 // 获取一个触摸点 59 System.out.println(String.format("x:%f,y:%f", event.getX(), 60 event.getY())); 61 62 System.out.println("===>>触摸点个数" + event.getPointerCount()); 63 // 获取多个触摸点----只能在真机上测试 64 // System.out.println(String.format("x1:%f y1:%f,x2:%f, y2:%f", 65 // event.getX(0),event.getY(0),event.getX(1),event.getY(2))); 66 break; 67 // 触摸抬起 68 case MotionEvent.ACTION_UP: 69 System.out.println("----->>ACTION_UP"); 70 break; 71 72 default: 73 break; 74 } 75 return true;// 后续事件是否需要被触发 76 } 77 }); 78 } 79 80 }