多点触摸交互处理,放大缩小

来源:互联网 发布:office2011 mac破解版 编辑:程序博客网 时间:2024/05/07 02:59
package com.example.multouch;import android.app.Activity;import android.os.Bundle;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.widget.FrameLayout;import android.widget.FrameLayout.LayoutParams;import android.widget.ImageView;import android.widget.TextView;public class MainActivity extends Activity {private FrameLayout fl;private TextView tv1;private ImageView iv1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);fl = (FrameLayout) findViewById(R.id.container);tv1 = (TextView) findViewById(R.id.tv1);iv1 = (ImageView) findViewById(R.id.iv1);// 2.设置事件监听器fl.setOnTouchListener(new OnTouchListener() {float currentDistance;float lastDistance = -1;@Overridepublic boolean onTouch(View v, MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN:System.out.println("action down");break;case MotionEvent.ACTION_MOVE:tv1.setText(String.format("x:%f ; y:%f ;触摸点数:" + event.getPointerCount(),event.getX(), event.getY()));// 获取多个触摸点for (int i = 0; i < event.getPointerCount(); i++) {System.out.println(String.format("x" + i + ":%f ; y" + i + ":%f ", event.getX(i), event.getY(i)));tv1.setText(String.format("x:%f ; y:%f ;触摸点数:" + i,event.getX(i), event.getY(i)));}// 图片拖动FrameLayout.LayoutParams lp = (LayoutParams) iv1.getLayoutParams();lp.leftMargin = (int) event.getX();lp.topMargin = (int) event.getY();iv1.setLayoutParams(lp);// 图片放大缩小if (event.getPointerCount() >= 2) {float offsetX = event.getX(0) - event.getX(1);float offsetY = event.getY(0) - event.getY(1);currentDistance = (float) Math.sqrt(offsetX * offsetX + offsetY * offsetY);if (lastDistance<0) {lastDistance = currentDistance;}else {if (currentDistance - lastDistance >10) {System.out.println("fang da"); FrameLayout.LayoutParams lp1 = (LayoutParams) iv1.getLayoutParams();lp1.width = (int) (1.1f*iv1.getWidth());lp1.height = (int) (1.1f*iv1.getHeight());iv1.setLayoutParams(lp1);lastDistance = currentDistance;}else if (lastDistance - currentDistance >10){System.out.println("suo xiao");FrameLayout.LayoutParams lp1 = (LayoutParams) iv1.getLayoutParams();lp1.width = (int) (0.9f*iv1.getWidth());lp1.height = (int) (0.9f*iv1.getHeight());iv1.setLayoutParams(lp1);lastDistance = currentDistance;}}}break;case MotionEvent.ACTION_UP:System.out.println("action up");break;default:break;}return true;}});}}/** * View.setOnTouchListener(OnTouchListener l)  * event.getX()  * event.getY() * event.getPointerCount() 触摸点个数 event.getX(0) 获取第一个触摸点位置 event.getY(0) * 图片的拖动:通过获取 imageView 通过触摸点位置重置imageView */


0 0