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的更多相关文章
随机推荐
- java 面试
115个Java面试题和答案——终极列表(上) 本文我们将要讨论Java面试中的各种不同类型的面试题,它们可以让雇主测试应聘者的Java和通用的面向对象编程的能力.下面的章节分为上下两篇,第一 ...
- poj 2528Mayor's posters
http://poj.org/problem?id=2528 这个题有个细节,整个区间的长度为10000000,而n最大只有1000,所以我们要进行离散化. #include<cstdio> ...
- SCALA中类的继承
慢慢的,回想起以前学习JAVA和C#当中的的类的特性了. 感觉大同小异吧... package com.hengheng.scala class OOPInScala { } class Studen ...
- 高效率dc升壓轉換器 應用技巧談 功率設計
為便攜式電子設備開發電源電路要求設計工程師通過最大程度地提高功率和降低整個系統的功耗來延長電池使用壽命,這推動器件本身的尺寸變得更小,從而有益于在設計終端產品時獲得更高靈活性.這種設計的最重要元器件之 ...
- 禁止ultraedit自动检查更新的方法
菜单栏: 高级->配置->应用程序布局->其他 取消勾选“自动检查更新”
- Keil C51库函数原型列表
//1. CTYPE.H bit isalnum(char c): bit isalpha(char c): bit iscntrl(char c): bit isdigit(char c): bit ...
- magento 修改 paypal order product name
app/code/core/Mage/Sales/Model/Quote Item.php public function setProduct($product) { if ($this-> ...
- 【Express】路由
var express = require('express'); var app = express(); app.set('port', process.env.PORT || 3000); ap ...
- -_-#【Mac】快捷操作
快捷键 command + 拖拽 = 剪切option + 拖拽 = 复制command + option + 拖拽 = 快捷方式 command + ] 前进command + [ 后退 comma ...
- WIndows系统下mysql-noinstall安装配置
环境: Windowsmysql-noinstall-5.0.37-win32.zip 一.下载MySQL http://www.mysql.com/downloads 二.安装过程 1.解压缩mys ...