Android_Touch_Test
1 package com.example.qjm3662.android_touch_test;
2
3 import android.os.Bundle;
4 import android.support.design.widget.FloatingActionButton;
5 import android.support.design.widget.Snackbar;
6 import android.support.v7.app.AppCompatActivity;
7 import android.support.v7.widget.Toolbar;
8 import android.util.Log;
9 import android.view.MotionEvent;
10 import android.view.View;
11 import android.view.Menu;
12 import android.view.MenuItem;
13 import android.widget.ImageView;
14 import android.widget.LinearLayout;
15
16 public class MainActivity extends AppCompatActivity {
17
18 private String TAG = "MainActivity";
19 private LinearLayout root;
20 private ImageView iv;
21 @Override
22 protected void onCreate(Bundle savedInstanceState) {
23 super.onCreate(savedInstanceState);
24 setContentView(R.layout.activity_main);
25
26 root = (LinearLayout) findViewById(R.id.container);
27 iv = (ImageView) findViewById(R.id.iv);
28
29 root.setOnTouchListener(new View.OnTouchListener() {
30
31 float offsetX;
32 float offsetY;
33 float curruntDistance; //当前距离
34 float lastDistance = -1; //前一次的距离
35 @Override
36 public boolean onTouch(View v, MotionEvent event) {
37 switch(event.getAction()){
38 case MotionEvent.ACTION_DOWN:
39 Log.e(TAG,"down");
40 break;
41 case MotionEvent.ACTION_UP:
42 Log.e(TAG,"up");
43 break;
44 case MotionEvent.ACTION_MOVE:
45 if(event.getPointerCount() > 1){
46
47 //两个触摸点之间的距离
48 offsetX = event.getX(0) - event.getX(1);
49 offsetY = event.getY(0) - event.getY(1);
50
51 //当前距离
52 curruntDistance = (float) Math.sqrt(offsetX * offsetX + offsetY * offsetY);
53
54 //第一次给lastDistance赋值
55 if(lastDistance < 0){
56 lastDistance = curruntDistance;
57 }else{
58 //获取ImageView的layoutParms
59 LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) iv.getLayoutParams();
60
61 //与上一次相比距离增大(5px是为了考虑操作误差)
62 if(curruntDistance - lastDistance > 5){
63
64 //放大图片操作
65 layoutParams.width = (int) (1.1f*iv.getWidth());
66 layoutParams.height = (int) (1.1f*iv.getHeight());
67
68 //操作完务必给lastDistance重新赋值
69 lastDistance = curruntDistance;
70 iv.setLayoutParams(layoutParams);
71 Log.e(TAG,"放大");
72 }
73 //与上一次相比距离减小(5px是为了考虑操作误差)
74 else if(lastDistance - curruntDistance > 5){
75 layoutParams.width = (int) (0.9f*iv.getWidth());
76 layoutParams.height = (int) (0.9f*iv.getHeight());
77 lastDistance = curruntDistance;
78 iv.setLayoutParams(layoutParams);
79 Log.e(TAG,"缩小");
80 }
81 }
82 }
83
84 // Log.e(TAG, "move");
85 // //多点触控
86 // Log.e(TAG,"Point count : " + event.getPointerCount());
87 // if(event.getPointerCount() > 1){
88 // Log.e(TAG,String.format("x1:%f,y1:%f\nx2:%f,y2:%f",event.getX(0),event.getY(0),event.getX(1),event.getY(1)));
89 // }
90
91
92 // //获取单个触摸点
93 // LinearLayout.LayoutParams lp;
94 // lp = (LinearLayout.LayoutParams) iv.getLayoutParams();
95 // Log.e(TAG,String.format("x:%f,y:%f",event.getX(),event.getY()));
96 // lp.leftMargin = (int) event.getX();
97 // lp.topMargin = (int) event.getY();
98 // iv.setLayoutParams(lp);
99 break;
}
return true;
}
});
}
}
Android_Touch_Test的更多相关文章
随机推荐
- temp gbk2utf8
__author__ = 'root' # -*- coding: utf-8 -*- ps = '/data/poitestdata/行政地名.csv' pt = '/data/poitestdat ...
- UML问题
1.在创建协作图时需要先确定参与者,而协作图的工具栏里是没有Actor的,这是需要先new Actor,然后把其拖动到工作区:实验过程中发现必须创建在用例视图下,若是创建在逻辑试图下那么根本无法继续操 ...
- 【java】基于Tomcat的WebSocket转帖 + 自己理解
网址:http://redstarofsleep.iteye.com/blog/1488639 原帖时间是2012-5-8,自己书写时间是2013年6月21日10:39:06 Java代码 packa ...
- Ganglia + Nagios 初步实践
参考文档: http://www.bubuko.com/infodetail-715636.html http://www.linuxidc.com/Linux/2014-01/95804p2.htm ...
- Hadoop CombineFileInputFormat实现原理及源码分析
Hadoop适用于少量的大文件场景,而不是大量的小文件场景(这里的小文件通常指文件大小显著小于HDFS Block Size的文件),其主要原因是因为FileInputFormat在为这些小文件生成切 ...
- [Linux] 流 ( Stream )、管道 ( Pipeline ) 、Filter - 笔记
流 ( Stream ) 1. 流,是指可使用的数据元素一个序列. 2. 流,可以想象为是传送带上等待加工处理的物品,也可以想象为工厂流水线上的物品. 3. 流,可以是无限的数据. 4. 有一种功能, ...
- [Java] 实例创建的步骤
创建类的一个实例时,按照下面步骤进行创建: 1. 给当前类及其父.祖类的所有成员字段分配空间,并给它们赋予默认值 2. 开始执行当前类的构造器 3. 如果当前类有父类,则对父类创建一个实例:从第 2 ...
- 基本 vi 命令
前言 本文内容翻译 Basic vi Command, Colorado State University, 翻译原文的大部分内容. 本文介绍的是 UNIX 下的 vi 编辑器,和 Linux 下常用 ...
- 使用MJRefresh遇到的坑
在使用MJRefresh的时候,下拉刷新表头停在了上部,箭头并没有隐藏 解决方法:进行数据请求的时候不要使用 beginRefresh方法,要直接调用方法进行数据请求
- ssh远程连接不上ubuntu
问题描述: 1.ubuntu安装了openssh-server,启动了ssh 守护进程,使用端口22 2.在本机可以 ssh 127.0.0.1 连接 3.通过ssh远程(比如用putty 或crt) ...