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;
@Override
protected 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;
@Override
public 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
*/