多点触摸的操作与图片放大缩小

 1 import android.app.Activity;
 2 import android.os.Bundle;
 3 import android.view.MotionEvent;
 4 import android.view.View;
 5 import android.widget.FrameLayout;
 6 import android.widget.FrameLayout.LayoutParams;
 7 import android.widget.ImageView;
 8
 9 public class MainActivity extends Activity {
10
11     private ImageView iv;
12     private FrameLayout root;
13
14     @Override
15     protected void onCreate(Bundle savedInstanceState) {
16         super.onCreate(savedInstanceState);
17         setContentView(R.layout.activity_main);
18
19         root = (FrameLayout) findViewById(R.id.container);
20         iv = (ImageView) findViewById(R.id.iv);
21
22         root.setOnTouchListener(new View.OnTouchListener() {
23
24             float currentDistance;
25             float lastDistance = -1; // 记录最有一次所记录的值
26
27             @Override
28             public boolean onTouch(View v, MotionEvent event) {
29
30                 switch (event.getAction()) {
31                 case MotionEvent.ACTION_DOWN: // 触摸按下
32                     System.out.println("action down");
33                     break;
34                 case MotionEvent.ACTION_MOVE: // 触摸移动
35                     // System.out.println("action move");
36                     System.out.println("触摸点个数:" + event.getPointerCount());
37
38                     if (event.getPointerCount() >= 2) { // 判断大于等于两个触摸点
39
40                         float offsetX = event.getX(0) - event.getX(1);
41                         float offsetY = event.getY(0) - event.getY(1);
42                         // 计算出两个点之间的距离
43                         currentDistance = (float) Math.sqrt(offsetX * offsetX
44                                 + offsetY * offsetY);
45
46                         if (lastDistance < 0) { // 初始值
47                             lastDistance = currentDistance;
48                         } else {
49                             // 当前距离比上次距离>5个像素,可以识别为放大。
50                             if (currentDistance - lastDistance > 5) {
51                                 System.out.println("放大");
52
53                                 FrameLayout.LayoutParams lp = (LayoutParams) iv
54                                         .getLayoutParams();
55                                 lp.width = (int) (1.1f * iv.getWidth());
56                                 lp.height = (int) (1.1f * iv.getHeight());
57
58                                 iv.setLayoutParams(lp);
59
60                                 lastDistance = currentDistance;
61                             } else if (lastDistance - currentDistance > 5) { //
62                                 System.out.println("缩小");
63
64                                 FrameLayout.LayoutParams lp = (LayoutParams) iv
65                                         .getLayoutParams();
66                                 lp.width = (int) (0.9f * iv.getWidth());
67                                 lp.height = (int) (0.9f * iv.getHeight());
68
69                                 iv.setLayoutParams(lp);
70
71                                 lastDistance = currentDistance;
72                             }
73                         }
74                     }
75                     break;
76                 case MotionEvent.ACTION_UP: // 触摸弹起
77                     // System.out.println("action up");
78                     break;
79                 }
80
81                 return true;
82             }
83         });
84     }
85
86 }
 1 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:id="@+id/container"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     tools:context="com.jikexueyuan.multouch.MainActivity"
 7     tools:ignore="MergeRootFrame" >
 8
 9     <ImageView
10         android:id="@+id/iv"
11         android:layout_width="wrap_content"
12         android:layout_height="wrap_content"
13         android:src="@drawable/ic_launcher" />
14
15 </FrameLayout>
时间: 2024-10-06 04:46:45

多点触摸的操作与图片放大缩小的相关文章

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灯箱效果,直接打开一个新连接.但是如果想做成灯箱效果的话,可以看我这篇博客,灯箱效果演示 我们可以

Canvas实现图片放大缩小移动操作

对于HTML5相信大家都不陌生,很早就出来了,但是貌似都没有真正的使用过.最近做项目时要实现这样一个需求:一个图片,大小不固定,要求能实现类似地图一样放大.缩小.移动功能.这里就很合适使用html5的canvas画布.实现步骤如下:1. 定义一个canvas标签. <canvas id="bargraphCanvas" width="500" height="600"></canvas> 这里有个很重要的地方,就是这个wi

图片放大缩小(和ViewPager配合使用流畅显示)--第三方开源--PhotoView

图片的放大缩小实现效果是使用的github上的一个开源项目photoView实现的,下载地址:https://github.com/chrisbanes/PhotoView 下面看测试代码: activity_main.xml: 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/too