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

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

欢迎加入我的交流群: 386451316

main.xml文件

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/mo_i"
tools:context=".MainActivity" >

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/im"
android:src="@drawable/ic_launcher"/>

</FrameLayout>

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;

}

时间: 2024-08-07 21:19:51

Android 多点触摸(图片放大缩小)的相关文章

Android多点触摸放大缩小图片

1.Activity package com.fit.touchimage; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Matrix; import android.graphics.PointF; import android.os.Bundle; import android.util.F

用简单的方法,在android上实现手势放大缩小功能

package com.example.eventtest; import java.util.ArrayList; import android.os.Bundle; import android.app.Activity; import android.gesture.GestureOverlayView; import android.gesture.GestureOverlayView.OnGestureListener; import android.graphics.Point; i

swift3.0 图片放大缩小动画效果

一. 内容说明 跟我之前这篇类似,只不过那篇是OC版本,这篇是Swift版本 OC版本链接地址 目的:通过kingfisher请求5张图片,展示出来.然后利用图片放大缩小管理类展示图片,多张图片可以滑动浏览 效果图如下,想看动态的效果图,请看上面链接中的OC版本效果图,跟这篇是一样的. 本demo,只加载本地图片的demo下载链接 ,需要加载网络图片的,需要下载Kingfisher 二.源码展示 0. 图片测试demo源码 [html] view plain copy import Founda

图片放大缩小闪烁效果

<!doctype html><html lang="en"><head> <meta charset="UTF-8"> <title>css3 图片放大缩小闪烁效果</title> <style></style> <style> body{background:#7fa8d1;opacity:0.5.6;} .flicker_down{ width:105p

css3 图片放大缩小闪烁效果

直接把图片替换就可以了,我的图片是透明的,所以body设置为黑色的,不不要可以去掉 <!doctype html><html lang="en"><head> <meta charset="UTF-8"> <title>css3 图片放大缩小闪烁效果</title> <style> body{background:#000;opacity:0.8;} .flicker_down{ w

jQuery照片伸缩效果,不是单纯的图片放大缩小,不影响其他元素的布局

之前在网上看到这种特效,无奈当时没有收藏网址,导致后来一度不知道这个特效是怎么实现的.今天特意在网上搜罗了一下,果然功夫不负有心人,被我找到了. 我也努力过自己尝试着写: 但只是单纯的图片放大,而且还影响了图片周围的元素的布局(因为图片放大占据了更大的空间). 后来发现要灵活巧妙的运用overflow和position这两个属性,就能达到目的.其实我觉得CSS(CSS3)中的overflow和position(顺带的top,bottom,left,right)简直是做网页特效无解的组合,当然还是

鼠标滚轮图片放大缩小功能,使用layer弹框后不起作用

今天在项目中遇到的一个问题:点击按钮使用layer弹框弹出一张图片,需要加一个鼠标滚轮放大缩小,图片也跟着放大缩小的功能.于是在网上找了一个demo. DEMO: 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="

uiscrollview 图片放大缩小

1.UIScrollView下图片的捏合放大和缩小,我们直接用scrollView自带的属性就可以了,这个没什么好说,我们直接贴代码: [plain] view plaincopy //控制器 theScroll=[[UIScrollView alloc] initWithFrame:frame]; theScroll.userInteractionEnabled=YES; theScroll.maximumZoomScale=2.0;//最大倍率(默认倍率) theScroll.minimum

javascript仿新浪微博图片放大缩小及旋转效果

经常看到新浪微博里有图片放大缩小旋转效果,感觉效果还不错,所以就想试着做一个类似的demo出来,至于旋转对于IE可以用滤镜来解决,标准的浏览器可以用html5中的canvas画布来解决. 思路:1.点击小图后,小图隐藏掉,在小图父级元素后增加一张大图且显示出来. 2.点击往左转,往右转触发旋转方法. 3. 点击收起按钮,把1的步骤反过来 隐藏大图 显示小图. 4. 点击查看原图功能 目前没有做成js灯箱效果,直接打开一个新连接.但是如果想做成灯箱效果的话,可以看我这篇博客,灯箱效果演示 我们可以

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

多点触摸(MultiTouch),指的是允许计算机用户同时通过多个手指来控制图形界面的一种技术.与多点触摸技术相对应的就是单点触摸,单点触摸的设备已经有很多年了,小尺寸的有触摸式的手机,大尺寸的最常见的就是银行里的ATM机和排队查询机等等. 多点触摸技术在实际开发过程中,用的最多的就是放大缩小功能.比如有一些图片浏览器,就可以用多个手指在屏幕上操作,对图片进行放大或者缩小.再比如一些浏览器,也可以通过多点触摸放大或者缩小字体.其实放大缩小也只是多点触摸的实际应用样例之一,有了多点触摸技术,在一定