700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > android 图片放大缩小 多点触摸 Android 多点触摸(图片放大缩小)

android 图片放大缩小 多点触摸 Android 多点触摸(图片放大缩小)

时间:2019-07-04 09:05:38

相关推荐

android 图片放大缩小 多点触摸 Android 多点触摸(图片放大缩小)

就不说什么了,有注释 基本有基础的都看得懂

欢迎加入我的交流群:386451316

main.xml文件

xmlns:tools="/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:id="@+id/mo_i"

tools:context=".MainActivity" >

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/im"

android:src="@drawable/ic_launcher"/>

java代码

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

tm_i = (FrameLayout) findViewById(R.id.mo_i);

im = (ImageView) findViewById(R.id.im);

// 触摸事件

tm_i.setOnTouchListener(new OnTouchListener() {

float current;// 第一次距离

float ladtcuss = -1; // 最后的距离

@Override

public boolean onTouch(View v, MotionEvent event) {

switch (event.getAction()) {// 获取事件

case MotionEvent.ACTION_DOWN:// 按下的操作

break;

case MotionEvent.ACTION_MOVE:// 移动

/**

* 获取多个触摸点 需要用真机调试

*/

if (event.getPointerCount() >= 2) {

float offsetX = event.getX(0) - event.getX(1);

float offsetY = event.getY(0) - event.getY(0);

// 使用勾股定理 获取两点距离

current = (float) Math.sqrt(offsetX * offsetX + offsetY

* offsetY);

if(ladtcuss<0){

ladtcuss = current;

}else{

if(current-ladtcuss>5){

System.out.println("1");

FrameLayout.LayoutParams lp = (LayoutParams)im.getLayoutParams();

lp.width=(int) (1.1f * im.getWidth());

lp.height=(int) (1.1f * im.getHeight());

im.setLayoutParams(lp);

ladtcuss = current;

}else if(ladtcuss-current>5){

System.out.println("0");

FrameLayout.LayoutParams lp = (LayoutParams)im.getLayoutParams();

lp.width=(int) (0.9f * im.getWidth());

lp.height=(int) (0.9f * im.getHeight());

im.setLayoutParams(lp);

ladtcuss = current;

}

}

}

// 获取触摸点的个数

System.out.println("motoll---->" + event.getPointerCount());

System.out.println(String.format("x1:%f y1:%f x2:%f y2%f",

event.getX(0), event.getY(0), event.getX(1),

event.getY(1)));

/**

* 以下是获取一个触摸点

*/

// 图片位于 FrameLayout 中

// FrameLayout.LayoutParams lp = (LayoutParams)

// im.getLayoutParams();

// lp.leftMargin = (int) event.getX();

// lp.topMargin = (int) event.getY();

// im.setLayoutParams(lp);

// //输出触摸点

// System.out.println(String.format("x:%f, y:%f",event.getX(),event.getY()));

break;

case MotionEvent.ACTION_UP:// 弹起

break;

}

// false表示事件没有后续事件触发

return true;

}

});

}

private FrameLayout tm_i;

private ImageView im;

}

原文:/Striver-zw/p/4188994.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。