android流行的轨迹,Android轻松画出触摸轨迹

本文实例介绍了Android如何画出触摸轨迹的方法,分享给大家供大家参考,具体内容如下

效果图:

ee29a0a42d6f6c7f6f8d809945eb71c3.png

实现代码:

package com.android.gameview5;

import android.app.Activity;

import android.content.Context;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.graphics.Path;

import android.os.Bundle;

import android.view.MotionEvent;

import android.view.SurfaceHolder;

import android.view.SurfaceHolder.Callback;

import android.view.SurfaceView;

import android.view.Window;

import android.view.WindowManager;

public class SurfaceViewActivity3 extends Activity {

public void onCreate(Bundle s){

super.onCreate(s);

//全屏显示

requestWindowFeature(Window.FEATURE_NO_TITLE);

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FULLSCREEN);

setContentView(new MyView(this));

}

public class MyView extends SurfaceView implements Callback,Runnable{

public static final int TIME_IN_FRAME =50;

Paint mPaint = null;

Paint mTextPaint = null;

SurfaceHolder mSurfaceHolder = null;

boolean mRunning = false;

Canvas mCanvas = null;

private Path mPath;

private float mPosX,mPosY;

public MyView(Context context){

super(context);

this.setFocusable(true);

this.setFocusableInTouchMode(true);

mSurfaceHolder = this.getHolder();

mSurfaceHolder.addCallback(this);

mCanvas = new Canvas();

mPaint = new Paint();

mPaint.setColor(Color.BLACK);

mPaint.setAntiAlias(true);

mPaint.setStyle(Paint.Style.STROKE);

mPaint.setStrokeCap(Paint.Cap.ROUND);

mPaint.setStrokeWidth(6);

mPath = new Path();

mTextPaint = new Paint();

mTextPaint.setColor(Color.BLACK);

mTextPaint.setTextSize(15);

}

public boolean onTouchEvent(MotionEvent event){

int action = event.getAction();

float x = event.getX();

float y = event.getY();

switch(action){

case MotionEvent.ACTION_DOWN:

mPath.moveTo(x, y);

break;

case MotionEvent.ACTION_MOVE:

mPath.quadTo(mPosX, mPosY, x, y);

break;

case MotionEvent.ACTION_UP:

//mPath.reset();

break;

}

//记录当前触摸点得当前得坐标

mPosX = x;

mPosY = y;

return true;

}

private void onDraw(){

mCanvas.drawColor(Color.WHITE);

//绘制曲线

mCanvas.drawPath(mPath, mPaint);

mCanvas.drawText("当前触笔X:"+mPosX,0,20,mTextPaint);

mCanvas.drawText("当前触笔Y:"+mPosY,0,40,mTextPaint);

}

public void run() {

// TODO Auto-generated method stub

while(mRunning){

long startTime = System.currentTimeMillis();

synchronized(mSurfaceHolder){

mCanvas = mSurfaceHolder.lockCanvas();

onDraw();

mSurfaceHolder.unlockCanvasAndPost(mCanvas);

}

long endTime = System.currentTimeMillis();

int diffTime = (int) (endTime - startTime);

while(diffTime<=TIME_IN_FRAME){

diffTime =(int)(System.currentTimeMillis()-startTime);

Thread.yield();

}

}

}

@Override

public void surfaceChanged(SurfaceHolder holder, int format, int width,

int height) {

// TODO Auto-generated method stub

}

@Override

public void surfaceCreated(SurfaceHolder holder) {

mRunning = true;

new Thread(this).start();

}

@Override

public void surfaceDestroyed(SurfaceHolder holder) {

// TODO Auto-generated method stub

mRunning = false;

}

}

}

以上就是Android轻松画出触摸轨迹的具体方法,希望对大家的学习有所帮助。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值