package alice.bw.com.day03surfaceview.view;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
/**
* 会呼吸的圆
*/
//1. 继承SurfaceView 实现 surfaceholder.callBack接口
public class CricleView extends SurfaceView implements SurfaceHolder.Callback {
private SurfaceHolder holder;
private DrawThread thread;
public CricleView(Context context) {
super(context);
init();
}
public CricleView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
// 2 实例化SurfaceHolder 对象
holder = getHolder();
//3 添加监听
holder.addCallback(this);
// 实例化绘制线程
thread = new DrawThread();
}
// surfaceView 创建
@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {
// 开启一个 绘制线程
thread.start();
}
// surface View 发生大小尺寸格式改变的时候调用
@Override
public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {
}
//当surfaceView 销毁的时候 调用
@Override
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
}
// 绘制线程
class DrawThread extends Thread {
@Override
public void run() {
super.run();
//画笔
Paint mPaint = new Paint();
mPaint.setColor(Color.RED);
//设置画笔的宽度
mPaint.setStrokeWidth(5);
//画笔线抗锯齿
mPaint.setAntiAlias(true);
//圆的直径
int radus = 0;
while (true) {
if (radus > 150)
radus = 0;
// 获取surfaceView的 画布 锁定一个画布
Canvas canvas = holder.lockCanvas();
// 绘制
radus += 5;
if(canvas!=null){
canvas.drawColor(Color.GREEN);//设置画布的颜色
//画一个圆
canvas.drawCircle(200, 200, radus, mPaint);
// 绘制结束后 解锁画布 并将修改的画布提交
holder.unlockCanvasAndPost(canvas);
}
}
}
}
}
会呼吸的圆
最新推荐文章于 2021-08-17 17:14:15 发布