下面是一个两点触控的案例代码:

package com.zzj;

import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent; public class AndroidTestActivity extends Activity {
private float x0, y0;
private float x1, y1; public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
} public boolean onTouchEvent(MotionEvent event) {
int pointerCount = event.getPointerCount();
int action = event.getAction();
if (pointerCount == 1) {
switch (action) {
case MotionEvent.ACTION_DOWN:
x0 = event.getX(0);
y0 = event.getY(0);
System.out.println("ACTION_DOWN pointerCount=" + pointerCount);
break;
case MotionEvent.ACTION_UP:
System.out.println("ACTION_UP pointerCount=" + pointerCount);
break;
case MotionEvent.ACTION_MOVE:
System.out.println("ACTION_MOVE pointerCount=" + pointerCount);
break;
}
}
if (pointerCount == 2) {
switch (action) {
case MotionEvent.ACTION_DOWN:
x0 = event.getX(0);
y0 = event.getY(0);
System.out.println("ACTION_DOWN pointerCount=" + pointerCount);
break;
case MotionEvent.ACTION_UP:
System.out.println("ACTION_UP pointerCount=" + pointerCount);
break;
case MotionEvent.ACTION_MOVE:
System.out.println("ACTION_MOVE pointerCount=" + pointerCount);
break;
case MotionEvent.ACTION_POINTER_1_DOWN:
System.out.println("ACTION_POINTER_1_DOWN pointerCount=" + pointerCount);
break;
case MotionEvent.ACTION_POINTER_1_UP:
System.out.println("ACTION_POINTER_1_UP pointerCount=" + pointerCount);
break;
case MotionEvent.ACTION_POINTER_2_DOWN:
System.out.println("ACTION_POINTER_2_DOWN pointerCount=" + pointerCount);
break;
case MotionEvent.ACTION_POINTER_2_UP:
System.out.println("ACTION_POINTER_2_UP pointerCount=" + pointerCount);
break;
}
}
return super.onTouchEvent(event);
}
}

下面是该案例的一些分析要点:1)使用event.getPointerCount()来获取当前触控点的个数。并判断触控点,来分别对不同的点进行事件处理。

                2)使用event.getAction()来获取当前的事件码,单点按下、松开和移动的事件分别是:MotionEvent.ACTION_DOWN、ACTION_UP、ACTION_MOVE;第二个点按下、松开和移动的事件分别是ACTION_POINTER_2_DOWN、                                    ACTION_POINTER_2_UP、ACTION_MOVE,注意,单点和两点响应相同的移动事件,即ACTION_MOVE。

                3)只有第二个点按下之后,才会响应MotionEvent.ACTION_POINTER_1_DOWN、MotionEvent.ACTION_POINTER_1_UP,初次单击是不响应这两个事件码的。这点切记。

                4)通过event.getX(0)、event.getY(0)来获取第一个点的坐标值,通过event.getX(1)、event.getY(1)来获取第二个点的坐标值。如果有更多的点,依次类推。

Android: 一个两点触控的案例的更多相关文章

  1. Android 单指触控拖拽,两指触控缩放

    import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view. ...

  2. Linux输入子系统:多点触控协议 -- multi-touch-protocol.txt【转】

    转自:http://blog.csdn.net/droidphone/article/details/8434768 Multi-touch (MT) Protocol --------------- ...

  3. Linux输入子系统:多点触控协议 -- multi-touch-protocol.txt768

    转自:http://blog.csdn.net/droidphone/article/details/8434768 Multi-touch (MT) Protocol --------------- ...

  4. Android 多点触控与简单手势(一)

    现在一般的Android手机都会使用电容触摸屏最少可以支持两点触摸,多的可能是七八个,所以基本上都会支持多点触控, android系统中应用程序可以使用多点触控的事件来完成各种手势和场景需求. And ...

  5. 关于android多点触控

    最近项目需要一个多点触控缩放的功能.然后上网查了下资料 总结一下: 首先android sdk版本很重要,比如你在AndroidManifest.xml中指定android:minSdkVersion ...

  6. Android多点触控技术

    1 简介 Android多点触控在本质上需要LCD驱动和程序本身设计上支持,目前市面上HTC.Motorola和Samsung等知名厂商只要使用电容屏触控原理的手机均可以支持多点触控Multitouc ...

  7. Android开发实例之多点触控程序

    智能终端设备的多点触控操作为我们带来了种种炫酷体验,这也使得很多Android开发者都对多点触控程序的开发感兴趣.实际上多点触控程序的实现并不是那么遥不可及,而是比较容易.本文就主要通过一个实例具体讲 ...

  8. Android多点触控(图片的缩放Demo)

    本文主要介绍Android的多点触控,使用了一个图片缩放的实例,来更好的说明其原理.须要实现OnTouchListener接口,重写当中的onTouch方法. 实现效果图:       源码: 布局文 ...

  9. windows phone 8.1开发:触控和指针事件1

    原文出自:http://www.bcmeng.com/windows-phone-touch/ UIElement类的触控事件: ManipulationStarting:当用户将手指放在 IsMan ...

随机推荐

  1. MongoDB可视化工具 Studio 3T

    告别终端使用可视化工具Studio 3T对MongoDB进行数据库的操作. 简单的使用步骤介绍 1.启动MongoDB服务器(方法见MongoDB介绍与安装中的介绍) 2.连接MongoDB服务器  ...

  2. Linux下apache安装php

    php 1.下载解压 cd /usr/local/src wget http://mirrors.sohu.com/php/php-5.6.9.tar.gz tar zxvf php-5.6.9.ta ...

  3. 【BZOJ3105】[cqoi2013]新Nim游戏 贪心+线性基

    [BZOJ3105][cqoi2013]新Nim游戏 Description 传统的Nim游戏是这样的:有一些火柴堆,每堆都有若干根火柴(不同堆的火柴数量可以不同).两个游戏者轮流操作,每次可以选一个 ...

  4. java jdk和android sdk的安装以及环境变量的配置

    安卓环境变量设置 (烦)http://wenku.baidu.com/link?url=QRwpFhP8d0yJorhcvuZPrz3lNFQW-uwYg6TlZtv6uen6_SVsvRrzf0UJ ...

  5. Wooden Sticks(hdu1051)

    Wooden Sticks Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submi ...

  6. Collective Mindsets (easy)(逻辑题)

    Collective Mindsets (easy) Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d &am ...

  7. android菜鸟学习笔记23----ContentProvider(三)利用内置ContentProvider监听短信及查看联系人

    要使用一个ContentProvider,必须要知道的是它所能匹配的Uri及其数据存储的表的结构. 首先想办法找到访问短信及联系人数据的ContentProvider能接受的Uri: 到github上 ...

  8. linux c编程:非阻塞I/O

    通常来说,从普通文件读数据,无论你是采用 fscanf,fgets 也好,read 也好,一定会在有限的时间内返回.但是如果你从设备,比如终端(标准输入设备)读数据,只要没有遇到换行符(‘\n’),r ...

  9. android启动页延时跳转

    package com.goodness.goodness; import android.content.Context; import android.content.Intent; import ...

  10. Struts2之ModelDriven的使用

    http://www.cnblogs.com/luoyanli/archive/2012/11/20/2778361.html 我们可以根据Action属性的不同将它分为两类:Field-Driven ...