当前位置:   article > 正文

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轻松画出触摸轨迹的具体方法,希望对大家的学习有所帮助。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/598746
推荐阅读
相关标签
  

闽ICP备14008679号