Android SurfaceView应用

参考:http://byandby.iteye.com/blog/824535

            http://www.himigame.com/android-game/306.html


package com.gdseed.canvastestboard;


import java.net.ContentHandler;


import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;


public class MyView extends SurfaceView implements SurfaceHolder.Callback {
private int mMoveX = 0;
private SurfaceHolder holder;
private MyThread myThread;

/*
在布局文件中的MyView
public MyView(Context context, AttributeSet attrs) {
super(context);


holder = this.getHolder();
holder.addCallback(this);
myThread = new MyThread(holder);// 创建一个绘图线程
}
*/

public MyView(Context context) {
super(context);

holder = this.getHolder();
holder.addCallback(this);
myThread = new MyThread(holder);// 创建一个绘图线程
}

public void onRedraw() {

new MyThread(holder).start();
}


@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {


myThread.start();
}


@Override
public boolean onTouchEvent(MotionEvent event) {


return super.onTouchEvent(event);
}


@Override
public void surfaceCreated(SurfaceHolder holder) {


myThread.isRun = true;
}


@Override
public void surfaceDestroyed(SurfaceHolder holder) {


myThread.isRun = false;
}


// 线程内部类
class MyThread extends Thread {
private SurfaceHolder holder;
public boolean isRun;


public MyThread(SurfaceHolder holder) {
this.holder = holder;
isRun = true;
}


@Override
public void run() {
while (isRun) {
Canvas c = null;
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}


try {
synchronized (holder) {
c = holder.lockCanvas();
if (c != null) {
c.drawColor(Color.WHITE);
DrawTools.drawTab(c, mMoveX);
mMoveX = 0;
} else {
Log.d("Zhangjd", "c is null");
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (c != null) {
holder.unlockCanvasAndPost(c);// 结束锁定画图,并提交改变。
}
isRun = false;
}
}
}
}
}



开始绘图:

画笔设置:

Paint paint = new Paint();

paint.setColor(Color.BLACK);

paint.setStyle(Style.FILL);

paint.setStrokeJoin(Paint.Join.ROUND);

paint.setStrokeWidth(1.0f);

paint.setTextSize(12);

绘制矩形:

mCanvas.drawRect(left, top, bottom,right, paint);

绘制线条:

mCanvas.drawLine(x1 , y1, x2, y2, paint);

绘制文字:

canvas.drawText(text,x,ypaint);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值