这里有新鲜出炉的精品教程,程序狗速度看过来!
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。
这篇文章主要介绍了Android编程实现两点触控功能的方法,涉及Android事件响应与处理相关操作技巧,需要的朋友可以参考下
本文实例讲述了Android编程实现两点触控功能。分享给大家供大家参考,具体如下:
下面是一个两点触控的案例代码:
- 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程序设计有所帮助。
来源: http://www.phperz.com/article/17/0915/345626.html