最近没什么事看了一下多点触控的例子,跟我开始想的实现方法一样,只是一些函数不知道:下面是常用的函数解释(copy过来滴....)

event.getAction() //获取触控动作比如ACTION_DOWN
event.getPointerCount(); //获取触控点的数量,比如2则可能是两个手指同时按压屏幕
event.getPointerId(nID); //对于每个触控的点的细节,我们可以通过一个循环执行getPointerId方法获取索引
event.getX(nID); //获取第nID个触控点的x位置
event.getY(nID); //获取第nID个点触控的y位置
event.getPressure(nID); //LCD可以感应出用户的手指压力,当然具体的级别由驱动和物理硬件决定的
event.getDownTime() //按下开始时间
event.getEventTime() // 事件结束时间
event.getEventTime()-event.getDownTime()); //总共按下时花费时间

下面是一个例子,其实很简单,不过是拷贝过来的,放在这里可以备忘,以后的学习.......:

代码如下:

package com.xy.multitouchvisible;import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;public class MyView extends SurfaceView implements SurfaceHolder.Callback {MainActivity father;private static final int MAX_TOUCHPOINTS = 10;private static final String START_TEXT = "请随便触摸屏幕进行测试";private Paint textPaint = new Paint();private Paint touchPaints[] = new Paint[MAX_TOUCHPOINTS];private int colors[] = new int[MAX_TOUCHPOINTS];private int width, height;// private float scale = 1.0f;public MyView(MainActivity father) {super(father);// TODO Auto-generated constructor stubthis.father = father;SurfaceHolder holder = getHolder();holder.addCallback(this);setFocusable(true); // 确保我们的View能获得输入焦点setFocusableInTouchMode(true); // 确保能接收到触屏事件init();}private void init() {// 初始化10个不同颜色的画笔textPaint.setColor(Color.WHITE);colors[0] = Color.BLUE;colors[1] = Color.RED;colors[2] = Color.GREEN;colors[3] = Color.YELLOW;colors[4] = Color.CYAN;colors[5] = Color.MAGENTA;colors[6] = Color.DKGRAY;colors[7] = Color.WHITE;colors[8] = Color.LTGRAY;colors[9] = Color.GRAY;for (int i = 0; i < MAX_TOUCHPOINTS; i++) {touchPaints[i] = new Paint();touchPaints[i].setColor(colors[i]);}}/** 处理触屏事件*/@Overridepublic boolean onTouchEvent(MotionEvent event) {// 获得屏幕触点数量int pointerCount = event.getPointerCount();if (pointerCount > MAX_TOUCHPOINTS) {pointerCount = MAX_TOUCHPOINTS;}// 锁定Canvas,开始进行相应的界面处理Canvas c = getHolder().lockCanvas();if (c != null) {c.drawColor(Color.BLACK);if (event.getAction() == MotionEvent.ACTION_UP) {// 当手离开屏幕时,清屏} else {// 先在屏幕上画一个十字,然后画一个圆for (int i = 0; i < pointerCount; i++) {// 获取一个触点的坐标,然后开始绘制int id = event.getPointerId(i);int x = (int) event.getX(i);int y = (int) event.getY(i);drawCrosshairsAndText(x, y, touchPaints[id], i, id, c);}for (int i = 0; i < pointerCount; i++) {int id = event.getPointerId(i);int x = (int) event.getX(i);int y = (int) event.getY(i);drawCircle(x, y, touchPaints[id], c);}}// 画完后,unlockgetHolder().unlockCanvasAndPost(c);}return true;}/*** 画十字及坐标信息*/private void drawCrosshairsAndText(int x, int y, Paint paint, int ptr,int id, Canvas c) {c.drawLine(0, y, width, y, paint);c.drawLine(x, 0, x, height, paint);int textY = (int) (5 + 20 * ptr);c.drawText("x" + ptr + "=" + x, 10, textY, textPaint);c.drawText("y" + ptr + "=" + y, 70, textY, textPaint);c.drawText("id" + ptr + "=" + id, width - 55, textY, textPaint);}/*** 画圆*/private void drawCircle(int x, int y, Paint paint, Canvas c) {c.drawCircle(x, y, 40, paint);}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {// TODO Auto-generated method stubthis.width = width;this.height = height;textPaint.setTextSize(14);Canvas c = getHolder().lockCanvas();if (c != null) {// 背景黑色c.drawColor(Color.BLACK);float tWidth = textPaint.measureText(START_TEXT);c.drawText(START_TEXT, width / 2 - tWidth / 2, height / 2,textPaint);getHolder().unlockCanvasAndPost(c);}}@Overridepublic void surfaceCreated(SurfaceHolder holder) {// TODO Auto-generated method stub}@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {// TODO Auto-generated method stub}
}用真机测试采用感觉哦.........

android多点触控的使用相关推荐

  1. Android多点触控详解

    本文转载自GcsSloop的 安卓自定义View进阶-多点触控详解 的文章 Android 多点触控详解,在前面的几篇文章中我们大致了解了 Android 中的事件处理流程和一些简单的处理方案,本次带 ...

  2. 模拟Android多点触控

    Android多点触控 Android多点触控 多点触控实现思路 第一种adb shell input方式 第二种adb shell sendevent方式 多点触控实现思路   经过资料的查询,要在 ...

  3. Android多点触控揭秘

    本文原创,转载请注明:http://blog.csdn.net/cloudzfy1/article/details/6582707 Google 暑期大学生博客分享大赛 - 2011 Android ...

  4. Android多点触控技术

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

  5. Android 多点触控消息捕获与处理

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

  6. Android 多点触控 MotionEvent详解

    相关API 介绍 MotionEvent.getY() 和 MotionEvent.getRawY() 的区别 getY 表示触摸事件在当前的View内的Y 坐标, getRawY表示触摸事件在整个屏 ...

  7. Android多点触控MultiTouch浅析

    申明: 参考:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2013/0226/914.html 下面实现如何通过应用层支持多点触控操作, ...

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

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

  9. 关于android多点触控

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

  10. android多点触控

    网上搜索后有很多的多点触控的东西,自己也写个吧,实现的就是在屏幕上画个圆角的矩形随着2点的大小而变换. 下面的东西是在网上找的一个例子然后自己更改的. View Code 1 package com. ...

最新文章

  1. 【python图像处理】彩色映射(续篇)
  2. 《碟中谍4:幽灵协议》蓝光1080P 720P首发!!汤姆克鲁斯主演
  3. Java黑皮书课后题第6章:*6.4(反序显示一个整数)使用下面的方法体编写方法,反序显示一个整数…例如reverse(3456)返回6543,编写一个测试程序,提示用户输入一个整数,然后显示它的反序
  4. P4173 残缺的字符串
  5. 虚拟机安装CentOS6.4
  6. 有人问我,为什么1+1等于2
  7. 计算机网络在智能建筑的发展,智能建筑的发展历史和趋势
  8. docker commit 制作镜像
  9. 要使一个问题能够用计算机解决,如何正确并解决在使用计算机中的问题?
  10. jQuery基础——选择器
  11. c# 查询sql 返回多个參数
  12. [转载] 高等应用数学问题的matlab求解——第4章 线性代数问题的计算机求解
  13. autojs 图片查找比对
  14. iOS各种证书配置总结
  15. python3代码-【Python】Python3纯代码极简教程
  16. Android仿360悬浮框
  17. Photoshop CS4在Windows11上会导致鼠标右键卡死的问题处理
  18. yocto编译linux,好实用!用 Yocto 在 Ubuntu 上创建最小化 Linux 发行版
  19. RedMonk最新编程语言排行榜;Spring 框架现 RCE 漏洞……|叨资讯
  20. Arduino连接nRF24L01无线收发模块

热门文章

  1. 阿联酋esma认证_阿联酋发布ECAS认证计划
  2. YApi内网部署、外网部署教程
  3. Python 日期处理
  4. javaweb课堂笔记(一)
  5. 坯子库怎么导入插件_SketchUp坯子库管理器 坯子插件库免费版v2019.4.0 - 云骑士一键重装系统...
  6. SAP-FICO CO凭证的相关知识点
  7. Java代码点和代码单元及其区别
  8. ibm服务器安装ghostxp系统,windows xpsp3 ghost安装最实用的方法
  9. ppt转换pdf格式软件
  10. Windows server 2003怎么安装iis?Windows server 2003安装IIS教程