android 画直线轨迹,Android 画出触摸轨迹

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;

}

}

}

跟比人学的,重要得是自己得理解

加油

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值