Android 中动态的绘制有两种方法,一种是用OpenGL ES,它主要用来做3D图形开发,对于一般的应用,我们会采取自定义一个View,然后覆盖onDraw()的方法,下面说一下第二种方法。
基本的思路是:
1:创建一个类,继承自View(或者SurfaceView)。
2:覆盖onDraw()方法。
3:使用Canvas对象在界面上绘制不同的图形,使用invalidate()方法刷新界面
下面通过两个例子来说明
一:弹球实例
自定义一个View,代码如下:
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.view.View;
public class MyView extends View implements Runnable{
//图形当前的坐标
private int mX = 20;
private int mY = 20;
public MyView(Context context,AttributeSet attrs){
super(context,attrs);
//获取焦点
setFocusable(true);
//启动线程
new Thread(this).start();
}
@Override
public void run() {
RefreshThread mDrawHandler = new RefreshThread();
while(!Thread.currentThread().isInterrupted()){
Message msg = new Message();
msg.what = 0x101;
mDrawHandler.sendMessage(msg);
try {
Thread.sleep(500);
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Override
protected void onDraw(Canvas canvas) {
//实例化画笔
Paint mPaint = new Paint();
//设置画笔颜色
mPaint.setColor(Color.RED);
//画圆
canvas.drawCircle(mX, mY, 20, mPaint);
super.onDraw(canvas);
}
class RefreshThread extends Handler{
@Override
public void handleMessage(Message msg) {
if(msg.what==0x101){
MyView.this.update();
}