求教Android多点触控屏幕显示触摸点的问题

想试试Android的多点触控,三根手指依次瞬间按下屏幕(按下的手指不抬起,最后同时抬起),需求是在按下的地方同时显示水波纹,现在这个代码执行起来只是在第一根手指按下的地方显示水波纹,请各位大神指教。

```package com.waterwave;

import java.util.ArrayList;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.os.Handler;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;

public class MultWave extends View {

private ArrayList<myWave> list;

private boolean isRuning;

public MultWave(Context context, AttributeSet attrs) {
    super(context, attrs);
    // TODO Auto-generated constructor stub
    initView();
}

private void initView() {
    // TODO Auto-generated method stub
    list = new ArrayList<MultWave.myWave>();

}

public MultWave(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
    initView();
}

private class myWave {
    int cx;
    int cy;
    Paint paint;
    int r;

}

private Handler handler = new Handler() {
    public void handleMessage(android.os.Message msg) {
        flushData();
        invalidate();
        if (isRuning) {
            handler.sendEmptyMessageDelayed(0, 50);
        }
    }

};

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    // TODO Auto-generated method stub
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}

protected void flushData() {
    // TODO Auto-generated method stub
    for (int i = 0; i < list.size(); i++) {
        myWave wave = list.get(i);
        int alpha = wave.paint.getAlpha();
        if (alpha == 0) {
            list.remove(i);
            continue;
        }
        alpha -= 5;
        if (alpha < 5) {
            alpha = 0;
        }
        wave.paint.setAlpha(alpha);
        wave.r += 3;
        wave.paint.setStrokeWidth(wave.r / 3);

    }
    if (list.size() == 0) {
        isRuning = false;
    }

}

@Override
protected void onDraw(Canvas canvas) {
    // TODO Auto-generated method stub
    for (int i = 0; i < list.size(); i++) {
        myWave wave = list.get(i);
        canvas.drawCircle(wave.cx, wave.cy, wave.r, wave.paint);

    }

}

@Override
public boolean onTouchEvent(MotionEvent event) {
    // TODO Auto-generated method stub

    switch (event.getAction() & MotionEvent.ACTION_MASK) {
    case MotionEvent.ACTION_POINTER_DOWN:

        int x = (int) event.getX();
        int y = (int) event.getY();
        addPoint(x, y);

        break;
    case MotionEvent.ACTION_DOWN:

        int x1 = (int) event.getX();
        int y1 = (int) event.getY();
        addPoint(x1, y1);
        break;

    }
    return true;
}

private void addPoint(int x, int y) {
    // TODO Auto-generated method stub
    if (list.size() == 0) {
        add2list(x, y);
        isRuning = true;
        handler.sendEmptyMessageDelayed(0, 200);

    } else {

        add2list(x, y);

    }
}

private void add2list(int x, int y) {
    // TODO Auto-generated method stub
    myWave wave = new myWave();
    wave.cx = x;
    wave.cy = y;
    wave.paint = new Paint();
    wave.paint.setAntiAlias(true);
    wave.paint.setAlpha(255);
    wave.paint.setStyle(Style.STROKE);
    wave.paint.setColor(Color.GREEN);
    list.add(wave);
}

}


0

4个回答

@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub

switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_POINTER_DOWN:

    int x = (int) event.getX();
    int y = (int) event.getY();
    addPoint(x, y);

    break;
case MotionEvent.ACTION_DOWN:

    int x1 = (int) event.getX();
    int y1 = (int) event.getY();
    addPoint(x1, y1);
    break;

}
return true;

}你这个是单点触摸的程序,所以只会相应第一个手指按下,你要改为多点相应的.

0

addPoint方法中,只有第一次才会sendEmptyMessageDelayed,也就是通知了一次而已

0
0

AddPoint方法中,只有第一次才会sendEmptyMessageDelayed

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
【Android】多点触控(判断触摸点是否在view上)
【关键词】rnrnAndroid 多点触控rnrn【问题】rnrn如何获取单个触摸点的位置,多个触摸点的位置又如何获取呢?如何根据触摸点的位置,确定触摸点是否在 view 上?rnrn【效果图】rnrn【分析】rnrn通过MotionEvent可以获取到触摸点个数;通过MotionEvent.getX(int pointerIndex)方法,可以获取到指定触摸点的X值;对于Y坐标同理;rnrn【解
Android—检测手机多点触摸点数
演示效果如下:rnrn//写一个实体类rnpublic class Circle {n public float x;n public float y;n public int r=100;n public int pointId;n int red;n int green;n int blue;n Random random=new Random(
Android开发中多点触摸的实现方法
在处理单点触摸中,我们一般会用到MotionEvent.ACTION_DOWN、ACTION_UP、ACTION_MOVE,然后可以用一个Switch语句来分别进行处理。ACTION_DOWN和ACTION_UP就是单点触摸屏幕,按下去和放开的操作,ACTION_MOVE就是手指在屏幕上移动的操作。rn在处理多点触摸的过程中,我们还需要用到MotionEvent.ACTION_MASK。一般使用s
android开发游记:多点触控解析与运用
andorid 自2.0以后加入了对多点触控的支持,而多点触控的使用,在多数应用中是用不到的,或者用不用区别不大,但是在某些需要拖拽的控件中加入多点触控的支持会有更好的用户体验,最常见的比如下拉刷新,美团、京东、百度糯米、阿里旅行等应用都没有处理多点触控的情况,因此在拉动的时候用2只手连续拉动就会出现页面闪动的情况。毕竟只有少数闲得蛋疼的用户才会这样去拖拽,处不处理区别不大,但是在一些更加复杂的拖拽
android 多点触摸绘画demo
public class GestureView extends View { public GestureView(Context context) {n super(context);n } TwofingerGestureDetector detector; Paint paint; public GestureView(Context contex
Android自定义View的多点触控
在Android游戏开发中,自定义View的多点触控技术必不可少,本文主要简单讲解下Android中多点触控技术的基础知识。n所谓多点触控技术,就是手机屏幕上支持同时处理多个触控点的触屏或移动事件。多点触控的关键点有以下三点:(1)需要LCD和应用程序同时支持;(2)通过重写View类中的onTouchEvent()方法来实现;(3)通过event.getActionMasked()来分类处理
android -布局控件禁用多点触控
只需要在外面Layout中设置rnandroid:splitMotionEvents="false"rn这个属性,就可以完美解决这个问题.rn参考文章:rnhttp://blog.csdn.net/aikongmeng/article/details/42238285
Android 检测手机多点触摸点数
多指点击屏幕,然后在点击的地方画相应的圆rn首先,我们先将圆的属性写入一个实体类rn代码如下:rnpackage com.zking.administrator.g160628_android19_pointstouch;nnimport android.graphics.Canvas;nimport android.graphics.Color;nimport android.graphics.
Unity中单点和多点触控
Input.touchCount获取当前的触摸点数目,若为1则是单点触控,大于1则是多点触控点击事件用:Input.GetTouch(num).phase== TouchPhase.Began这样的格式:1. usingUnityEngine;2.  3. usingSystem.Collections;4.  5. public classclick2 : MonoBehaviour {6.  ...
AndroidStudio-3.2.1(十一)触摸事件
本篇介绍android开发中用到的触摸事件处理。nn单点触摸n我们先添加一个FrameLayout布局的Activity,为了演示方便,在其中添加一个ImageView。代码如下:n&lt;?xml version="1.0" encoding="utf-8"?&gt;n&lt;FrameLayout xmlns:app="http://schemas.android.com/apk/res-a...
android多点触摸画图(画点和线)
n n n 下面贴出代码。nimport android.content.Context;nimport android.graphics.Bitmap;nimport android.graphics.Canvas;nimport android.graphics.Color;nimport android.graphics.Paint;nimport androi...
[多点触控测试]不用app,手机怎么测试屏幕触控点数
For Android :nn打开 设置/系统/开发人员选项/显示点按操作反馈。nn这样在屏幕上点按时就会有一个白色圆点出现。nn打开一张比较暗的图片(遮住摄像头就能拍一张全黑的),全屏查看。n这时在屏幕上点按就可以清楚的看到触控点了。一般屏幕都支持到10点触控。n十个手指用上,再加上一支电容笔,数一下有没有超过10点???n测试结果跟专门的测试软件结果一致。nn 2018-09-01 华为V8 ...
Android 实现多点触摸画圆
实现效果图:nnnnnn nn想要实现上述效果,非常的简单,我在这里就直接用代码给大家讲解了:nn首先我们要写一个圆的类:nn nnnpackage com.example.android19_zhangkai_pointstouch;nnimport android.graphics.Canvas;nimport android.graphics.Color;nimport android.gr...
IOS触摸事件处理(如何处理多个触摸点)
引用:rnrnrn在iOS开发中,UIGestureRecognizer可以方便的响应处理手势事件。rnrn而如果要想更精细的处理,我们还需要借助touchesBegan,touchesMoved,touchesEnded等触摸方法。这些方法 都是UIResponder中的方法。视图控制器和视图类,都是UIResponder的子类。正是这个类,让UIView等相关触摸事件得以响应。rnrnrnrn
unity3d 触屏多点触控(旋转与缩放)
[code=&quot;java&quot;]/*rnTouch OrbitrnProgrammed by: Randal J. Phillips (Caliber Mengsk)rnOriginal Creation Date: 12/16/2011rnLast Updated: 12/16/2011rnDesctiption: Simple orbit by one touch...
Android 禁用多点触控
两种方式:rn1、禁用全局多点触控:rn   在application引用的Theme中添加以下代码:rn  falsern  falsern2、如果要单独对某个界面禁用,则需要的在相应的xml或代码中添加:rn     android:splitMotionEvents="false" 或rn     rootLayout.setMotionEventSplittingEnabled(false
Android 快速学习onTouch,并完成实验单点滑动,双点触控,多点触控。(一)单点触控,拖动目标滑动
Android 快速学习onTouch,并完成实验单点滑动,双点触控,多点触控。(一)单点触控,拖动目标滑动话不多说先来看看onTouchEvent方法。/**n * 屏幕触控事件n * @param eventn * @returnn */n@Overridenpublic boolean onTouchEvent(MotionEvent event) {n return super.on...
Android单击屏幕获得坐标,屏幕多点触摸测试器
Android单击屏幕获得坐标,屏幕多点触摸测试器nnnnn<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"n android:orientation="vertical"n android:layout_width="fill_parent"
Android多点触控之——MotionEvent(触控事件)
今天晚上刚学习了一个多点触控的小程序,后面想对其做一个定制。在写的时候遇到很多问题,于是乎就查了一下API文档,又到网上查了一下高手的文章,最后自己又实践了一下。终于把多点触控事件监听的大概原理给弄清楚了。下面就写一下我个人对多点触控原理的理解:rn一、MotionEvent事件的分类rn      触控分为两类:单点触控和多点触控。rn      1、如何获取触控事件信息?rn        安
qt5 多点触控
触摸屏 QT
android 基于surfaceview 的多点触控实现
       hello,各位朋友。最近接到一个功能需要实现多点触控,也就是我们通常所看到的把手指放在屏幕上,可以放大和缩小图片的 操作。在google上查找了一些资料,发现很多都是使用imageView在实现的。但是在游戏的开发过程中,使用surfaceview效率会更高一些,所以就尝试使用surfaceview来实现。rn看代码:rnrnnpublic class DisplayActivit...
Android-多点触控的实现示例详解
最近在做一个多点触控的项目,因为之前没有做过相同的,就先写了一个示例代码。其中涉及了一些常用的实现方法,在此分析一下,和大家分享。 n这个示例涉及到的内容:1.静态设置横屏的方法;n2.设置全屏的方法;n3.在onCreate()方法中获取图片高度和宽度的方法;n4.多点触控。
android---多点触控
1.多点触控的基本概念n/**n* ①即便是多个手指触控,仍然只有一个move事件。n* 当第一个手指点击的时候index就为0,当第二个手指点击的时候index就为1n* 当第一个手指抬起的时候,第二个手指的点的index就变成了0n* 这个是和pointerId是不同的,应该是标记的是手指的按下的id值,是固定的n*n* ②当第一个手指点击后响应的是action_downn* 当第二个或更多的...
QT多点触屏
QT多点触屏
Android 多点触控与简单手势(一)
现在一般的Android手机都会使用电容触摸屏最少可以支持两点触摸,多的可能是七八个,所以基本上都会支持多点触控, android系统中应用程序可以使用多点触控的事件来完成各种手势和场景需求。 Android SDK中的MotionEvent类不仅封装了单点触摸的消息,也封装了多点触摸的消息,对于单点触摸和多点触摸的处理方式几乎是一样的。rnrnrn需要注意的是:Android的多点触控功能需要运
Android多点触摸交互处理
一)触摸事件监听rn监听手机屏幕的触摸事件,通过setOnTouchListener(),系统会回调onTouch(),在这里可以对触摸的不同状态进行监听。rn触摸事件onTouch()最后返回值默认为false,只能执行触摸状态,之后不再监听后续事件。因此我们应该将其设置为true,通知系统我们需要后续事件的触发,这样才能在滑动和离开状态的时候执行相应的操作。rn获取当前触摸点的坐标可以通过Mo
使用多点触控 实现图片的缩放和移动
实现的效果如图:代码如下public class XImageView extends ImageView {n public XImageView(Context context) {n super(context);n init();n } public XImageView(Context context, @Nullable AttributeS
Qt 5.x 多点触摸配置
Qt 5.x 相对于 4.8 及以前版本在窗口系统上有较大幅度改动,原来的QWS被QPA完全取代,导致输入设备配置简化了很多,这里先简单记录一下,后期完善。nn触摸屏配置可分两种方式,一种是电容屏或由驱动校准的电阻屏配置,另一种是需要借助tslib校准的电阻屏配置nnnn一、第一种方式比较简单,只需要在系统内加入两个宏定义即可(之所以这么简单,是因为我们使用了Qt默认基于libinput插件),...
qml中使用多点触摸
下面以Pinch手势(捏合手势)为例子,讲解如何在QML中实现多点触摸,qt源码中有相应工程,路径为example/declarative/touchinteraction/pincharea。rnrnrn注册和导入rnPinchArea作为QDeclarativeItem的子类,只要qml文件导入相应包(import QtQuick 1.1),可以直接在qml中申明并初始化。PinchArea注
cocos2d-x 3.14关闭安卓多点触摸
在cocos2d-x中创建EventListenerTouchOneByOne,来只用单点触摸。rn可是在安卓中,当你同时多指触摸屏幕时,则是多个触摸点,按依次触发来处理。这样并不是我们想要,可能引发诸多问题。rn比如,当你按下一个按钮,另一个按钮是不能按下的,可是按照这个依次触发机制,另一个按钮同时按下也会触发动作,这样可能导致各种问题。rn在3.14的更新日志中有这样一条:rn[NEW] Ca
Android手势操作(双击,长按,滑动,滚动,多点触控)
源码分享:https://github.com/heinika/GestureListenerrn主要使用到GestureDetector 这个类:在实际使用中一般使用他们的子类GestureDetector.SimpleOnGestureListener()rnrn下面自定义一个View实现手势操作:rnrnpublic class MyButton extends Button { pr
检测手机最多可以几个点触摸
单点触摸屏rn触摸屏的功能发展由简及繁,最初的产品只支持最简单的操控,就是一个手指触摸屏幕上的一点来实现操控。比如我们天天在附件超市的POS终端机,或者在机场的check-in终端上进行的操作。以前,我们只能通过屏幕周边的机械按钮进行操控,单点触摸屏在此基础上实现了用户界面方面的一大进步。rn当然,机械和新型电容式触摸感应按钮在我们的家庭、办公室及其他地方无所不在:手机、固定电话、遥控器、电视、电
Android开发之多点触摸(Multitouch)
如果您对开发多点触摸程序感兴趣的话,那么本文将是一个很好的开始,android应用程序开发中,多点触摸不是那么遥不可及,实现起来也很简单,本例只需要两个类就能实现多点触摸。rr首先来看看我们的视图类MTView.java:rrnpackage com.ideasandroid.demo;rnrnimport android.content.Context;rnimport android.grap
基于Android系统的多点触摸屏(MultiTouchScreen)驱动
理论:输入子系统由来  在Linux中, 应用层对于输入设备(鼠标、键盘、触摸屏等)的操作无非都是open、read、write、ioctl,然后调用驱动层的xxx_open、xxx_read、xxx_write、xxx_ioctl去操作具体的硬件输入设备。如果按照传统的思路,每个输入设备都按照这个套路写这些open、read等,是不是太过于累赘了。所以Linux就定义了一套标准,来标准化这些输入设
android 多点MotionEvent的构建,多点操作屏幕,多点触碰屏幕
论android 多点触碰的构建。可以用于外设对于手机的多点操控,比如说手柄,键鼠等1.我们先分析一下多个手点击滑动得到的MotionEvent。在view 重写onTouchEvent的方法,打印内容2.分析的内容,这边不做详细的截图,自己去打印查看,我们分析两个点,开始一个点是Action=ACTION_DOWN,然后move,id就是0,点下第二个点,action=ACTION_POINTE...
一种Unity里的多点触控处理方法
/*大家好,我感觉到游戏开发中有许多相通的共性,如动画,特效,声音,输入,文件,网络等。其中逻辑部分可以自己想,动画、特效、声音等依赖资源,输入部分处理依赖平台API,网络也要依赖平台API。平台与平台之间有很大的差异性,一般来说一个平台的软件不能放到不同CPU的平台上直接运行,为此,产生了JAVA、C#、Lua等脚本语言,依赖于要执行的平台安装运行脚本语言的环境。另外一种解决办法,是源代码的重新...
图片的预览处理----多点触控放缩/双击放大缩小/viewPager冲突解决
在android中,多点触控和双击图片很常用,比如朋友圈点击图片放大兼具手势点击滑动等;当然也有不少第三方来支持这些 比如:phtotView等;下面来实现一个自己实现的多点操作的图片预览,老规矩 先上图来展示效果:由于是截取模拟器的gif 所以没有显示多点触控 的手势操作 但是手机上完全支持这些操作: 1.手势多点放缩,且会有最大和最小的限制;n 2.双击放大缩小n 3.在放大时
android安卓触摸屏幕感应位置获得位置信息和触摸点变色工程源码
1、android安卓工程源码 2、触摸屏幕感应位置,获得位置坐标 3、触摸点变色 4、感应屏幕
android 手势监听和多点触摸 笔记
一、笔记链接1. Android手势监听Android上的手势监听实现 https://www.jianshu.com/p/095e81f21e07触摸事件与手势监听--Android GestureDetector详解 http://blog.csdn.net/hpk1994/article/details/51224228Android之ScaleGestureDetector(缩放手势检测)...
MFC多点触控画板
        为了搭配一个项目,决定做个支持多点的多人画板,之前一直使用winfrom但是不支持多点(微软自己的东西都不支持=.=),于是研究了两天MFC,哇,一比较,简直绝望,感觉使用好费劲,各种不知道问题的报错,但是做了两天还是实现基本功能了(第三天就让我实现更多的功能,于是有研究了两天wpf,简直简单,就是HTML和winform的结合体)。      官方的多点触控是基于单文档的,感谢这...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 区块链技术点 区块链问题