方法一:

新建"MyView"类

package onTouchEvent;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.MotionEvent;
import android.view.View; public class MyView extends View {
private int textX=,textY=;
public MyView(Context context) {
super(context);
setFocusable(true);
// TODO Auto-generated constructor stub
}
//画笔onDraw方法
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
//初始化画笔
Paint paint=new Paint();
//设置颜色
paint.setColor(Color.GREEN);
//设置字体大小
paint.setTextSize();
//在画布上写文字
canvas.drawText("Android", textX, textY, paint);
} @Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
//获取用户手指触屏的X坐标赋值与文本的X坐标
textX=(int)event.getX();
//获取用户手指触屏的Y坐标赋值与文本的Y坐标
textY=(int)event.getY();
//重绘画布
invalidate();
return true; } }

MainActivity中将setContentView设置为当前MyView,即

setContentView(new MyView(this));

执行效果图如下:

方法二:

方法二的不用之处就是使用了SurfaceHolder(选择器)方法

package com.example.cdp;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView; public class MySurfaceView extends SurfaceView implements Callback {
//定义一个SurfaceHolder相当于选择器
private SurfaceHolder sfh;
private int textX=,textY=;
public MySurfaceView(Context context) {
super(context);
// TODO Auto-generated constructor stub
//获得SurfaceHolder对象
sfh = getHolder();
//监听surface的生命周期
sfh.addCallback(this);
//获得焦点
setFocusableInTouchMode(true);
}
@Override
public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub }
@Override
public void surfaceCreated(SurfaceHolder arg0) {
// TODO Auto-generated method stub
myDraw();
} private void myDraw() {
// TODO Auto-generated method stub
new Thread(){
public void run() {
// 通过SurfaceHolder对象获得 Surface的Canvas成员变量,并且锁住Canvas
Canvas canvas = sfh.lockCanvas();
// 刷屏
canvas.drawColor(Color.BLACK);
// 初始画笔
Paint paint = new Paint();
// 设置抗锯齿,文字清晰点,不过相对比较耗性能
paint.setAntiAlias(true);
// 设置画笔颜色
paint.setColor(Color.RED);
// 设置文字大小
paint.setTextSize();
// 画(写)文字
canvas.drawText("Android", textX, textY, paint);
// 画完后,再将缓存的内容渲染到屏幕上,同时也是解锁
sfh.unlockCanvasAndPost(canvas);
};
}.start();
} @Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
//return super.onTouchEvent(event);
// 获取用户手指触屏的X坐标赋值与文本的X坐标
textX = (int) event.getX();
// 获取用户手指触屏的Y坐标赋值与文本的Y坐标
textY = (int) event.getY();
myDraw();
return true;
}
@Override
public void surfaceDestroyed(SurfaceHolder arg0) {
// TODO Auto-generated method stub } }

执行效果图:

Android之触屏事件的更多相关文章

  1. 转:Android随笔之——使用Root权限实现后台模拟全局按键、触屏事件方法(类似按键精灵)

    本文转载自CSDN的jzj1993,原文连接:http://blog.csdn.net/jzj1993/article/details/39158865 有时我们需要使用安卓实现在后台模拟系统按键,比 ...

  2. Android:触屏事件

    Android触屏事件包含两种: 1)屏幕触屏事件:重写onTouchEvent(MotionEvent event): 2)控件触屏事件:给控件注册触屏事件,setOnTouchEventListe ...

  3. (转)js的左右滑动触屏事件

    原文:http://blog.sina.com.cn/s/blog_6a0a183f0100zsfk.html (2012-01-20 08:55:53) 转载▼ 标签: 移动设备 触屏事件 杂谈 分 ...

  4. js触屏事件

    js的左右滑动触屏事件,主要有三个事件:touchstart,touchmove,touchend.这三个事件最重要的属性是 pageX和 pageY,表示X,Y坐标. touchstart在触摸开始 ...

  5. 移动端touch触屏滑动事件、滑动触屏事件监听!

    一.触摸事件 ontouchstart.ontouchmove.ontouchend.ontouchcancel 目前移动端浏览器均支持这4个触摸事件,包括IE.由于触屏也支持MouseEvent,因 ...

  6. HTML5学习总结-09 拖放和手机触屏事件

    一 拖放 拖放(Drag 和 drop)是 HTML5 标准的组成部分.拖放是一种常见的特性,即抓取对象以后拖到另一个位置.在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放. 课程参考 ht ...

  7. [IOS]自定义长触屏事件

    写一个Demo来自定义一个长触屏事件,自定义长按手势. 实现步骤: 1.创建一个自定义手势类,命名为LongPressGestureRecognizer,在创建的时候继承UIGestureRecogn ...

  8. cocos2d-x触屏事件(单点触屏)

    转自:http://blog.csdn.net/onerain88/article/details/7550009 一般经常用到的触屏的情况有两种:一种是Layer统一接收触屏消息,然后由程序根据需要 ...

  9. 从零开始学 Web 之 移动Web(二)JD移动端网页,移动触屏事件

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

随机推荐

  1. Connection 连接字符串释义

    本文将详细介绍如何使用Connection对象连接数据库.对于不同的.NET数据提供者,ADO.NET采用不同的Connection对象连接数据库.这些Connection对象为我们屏蔽了具体的实现细 ...

  2. 访问修饰符与可选修饰符static的使用

    在Java中修饰符较多,在这里简单说一说几个访问修饰符的选择使用,和可选修饰符static的使用. 一.访问修饰符:这是Java里用来控制访问类及类的方法.变量的访问权限,从而达到只暴露接口,来隐藏内 ...

  3. Rstudio设置永久工作路径

    Rstudio中 getwd() 获取工作路径 setwd() 设置工作路径 但这种方式设置后每次打开都要重新设置,现在介绍一种设置永久路径的方法

  4. C#中动态加载和卸载DLL

    在C++中加载和卸载DLL是一件很容易的事,LoadLibrary和FreeLibrary让你能够轻易的在程序中加载DLL,然后在任何地方卸载.在C#中我们也能使用Assembly.LoadFile实 ...

  5. RT-Thread学习笔记(1)

    前几天我在看uCOS-II的东西,看来看去一直没什么头绪.还有一点是,我很介意它现在是个商业软件,在官网下载东西,半天下完结果只有个lib,没有源代码.只能去其他地方下载老版本. 我还很介意不是在官方 ...

  6. android-betterpickers

    https://github.com/derekbrameyer/android-betterpickers

  7. python selenium自动化(一)点击页面链接测试

    需求:现在有一个网站的页面,我希望用python自动化的测试点击这个页面上所有的在本窗口跳转,并且是本站内的链接,前往到链接页面之后在通过后退返回到原始页面. 要完成这个需求就必须实现3点: 1. 找 ...

  8. 解决fedora64下vim不能语法着色问题

    初始状态是vim打开任何文件都没有高亮迹象,接不是彩色,也没有下划线,好了,看怎么一步步解决的... 1)#vim ~/.vimrc 竟然没有这个文件,创建之#touch vim ~/.vimrc 添 ...

  9. apache配置文件

    httpd-vhost.conf文件中: <VirtualHost *:80>    ServerAdmin webmaster@dummy-host2.example.com    Do ...

  10. 第一节:Maven 下载,安装和配置

    Maven是Apache的一个产品所以要下载Maven的话可以到https://www.apache.org网站上下载 进入到APache这个网站后看一下几部操作 第一: 选择点击导航栏上面的proj ...