zoukankan      html  css  js  c++  java
  • Android攻城狮 multi-touch多点触摸

     1 //多点触摸的简单应用----拖动图片
     2 public class MainActivity extends Activity {
     3     private FrameLayout root;
     4     private ImageView imageView;
     5 
     6     @Override
     7     protected void onCreate(Bundle savedInstanceState) {
     8         super.onCreate(savedInstanceState);
     9         setContentView(R.layout.activity_main);
    10         imageView = (ImageView) findViewById(R.id.image);
    11         root = (FrameLayout) findViewById(R.id.container);
    12         // 监听触摸事件
    13         root.setOnTouchListener(new OnTouchListener() {
    14 
    15             @Override
    16             public boolean onTouch(View v, MotionEvent event) {
    17                 // TODO Auto-generated method stub
    18                 switch (event.getAction()) {
    19                 // 触摸按下
    20                 case MotionEvent.ACTION_DOWN:
    21                     System.out.println("----->>ACTION_DOWN");
    22                     break;
    23                 // 触摸移动
    24                 case MotionEvent.ACTION_MOVE:
    25                     System.out.println("----->>ACTION_MOVE");
    26                     // 获取一个触摸点
    27                     System.out.println(String.format("x:%f,y:%f", event.getX(),
    28                             event.getY()));
    29                     // ---------获取一个安卓Android触摸点坐标-----拖动图片----------------
    30                     FrameLayout.LayoutParams lp = (LayoutParams) imageView
    31                             .getLayoutParams();
    32                     lp.leftMargin = (int) event.getX();
    33                     lp.topMargin = (int) event.getY();
    34                     imageView.setLayoutParams(lp);
    35 
    36                     System.out.println("===>>触摸点个数" + event.getPointerCount());
    37                     // 获取多个触摸点----只能在真机上测试
    38                     // System.out.println(String.format("x1:%f y1:%f,x2:%f, y2:%f",
    39                     // event.getX(0),event.getY(0),event.getX(1),event.getY(2)));
    40                     break;
    41                 // 触摸抬起
    42                 case MotionEvent.ACTION_UP:
    43                     System.out.println("----->>ACTION_UP");
    44                     break;
    45 
    46                 default:
    47                     break;
    48                 }
    49                 return true;// 后续事件是否需要被触发
    50             }
    51         });
    52     }
    53 
    54 }
     1 //多点触摸的简单应用----实现图片的放大缩小
     2 public class MainActivity extends Activity {
     3     private FrameLayout root;
     4     private ImageView imageView;
     5 
     6     @Override
     7     protected void onCreate(Bundle savedInstanceState) {
     8         super.onCreate(savedInstanceState);
     9         setContentView(R.layout.activity_main);
    10         imageView = (ImageView) findViewById(R.id.image);
    11         root = (FrameLayout) findViewById(R.id.container);
    12         // 监听触摸事件
    13         root.setOnTouchListener(new OnTouchListener() {
    14             float currentDistance;
    15             float lastDistance = -1;
    16 
    17             @Override
    18             public boolean onTouch(View v, MotionEvent event) {
    19 
    20                 // TODO Auto-generated method stub
    21                 switch (event.getAction()) {
    22                 // 触摸按下
    23                 case MotionEvent.ACTION_DOWN:
    24                     System.out.println("----->>ACTION_DOWN");
    25                     break;
    26                 // 触摸移动
    27                 case MotionEvent.ACTION_MOVE:
    28                     if (event.getPointerCount() >= 2) {
    29                         // 计算两点之间的距离
    30                         float offsetX = event.getX(0) - event.getX(1);
    31                         float offsetY = event.getY(0) - event.getY(1);
    32                         currentDistance = (float) Math.sqrt(offsetX * offsetX
    33                                 + offsetY * offsetY);
    34                     }
    35                     if (lastDistance < 0) {// 初始化
    36                         lastDistance = currentDistance;
    37                     } else {
    38                         if (currentDistance - lastDistance > 5) {
    39                             System.out.println("放大");
    40                             FrameLayout.LayoutParams lp = (LayoutParams) imageView
    41                                     .getLayoutParams();
    42                             lp.width = (int) (imageView.getWidth() * 1.1);
    43                             lp.height = (int) (imageView.getHeight() * 1.1);
    44                             imageView.setLayoutParams(lp);
    45                             lastDistance = currentDistance;
    46 
    47                         } else if (currentDistance - lastDistance < 5) {
    48                             System.out.println("缩小");
    49                             FrameLayout.LayoutParams lp = (LayoutParams) imageView
    50                                     .getLayoutParams();
    51                             lp.width = (int) (imageView.getWidth() * 0.9);
    52                             lp.height = (int) (imageView.getHeight() * 0.9);
    53                             imageView.setLayoutParams(lp);
    54                             lastDistance = currentDistance;
    55                         }
    56                     }
    57                     System.out.println("----->>ACTION_MOVE");
    58                     // 获取一个触摸点
    59                     System.out.println(String.format("x:%f,y:%f", event.getX(),
    60                             event.getY()));
    61 
    62                     System.out.println("===>>触摸点个数" + event.getPointerCount());
    63                     // 获取多个触摸点----只能在真机上测试
    64                     // System.out.println(String.format("x1:%f y1:%f,x2:%f, y2:%f",
    65                     // event.getX(0),event.getY(0),event.getX(1),event.getY(2)));
    66                     break;
    67                 // 触摸抬起
    68                 case MotionEvent.ACTION_UP:
    69                     System.out.println("----->>ACTION_UP");
    70                     break;
    71 
    72                 default:
    73                     break;
    74                 }
    75                 return true;// 后续事件是否需要被触发
    76             }
    77         });
    78     }
    79 
    80 }
  • 相关阅读:
    AmazonS3 替换HDFS 方案
    SQL Server 内存管理
    SQL Server I/O 问题的诊断分析
    共享内存 设计原理-shm
    机器学习经典算法笔记-Support Vector Machine SVM
    ACGAN 论文笔记
    CGAN 论文笔记
    《Image Generation with PixelCNN Decoders》论文笔记
    《Iterative-GAN》的算法伪代码整理
    《Deep Learning Face Attributes in the Wild》论文笔记
  • 原文地址:https://www.cnblogs.com/my334420/p/6904264.html
Copyright © 2011-2022 走看看