效果图
使用自定义SurfaceView
SurfaceView extends View
其实View是在UI线程中进行绘制
SurfaceView 是在一个子线程中队自己进行绘制,优势:避免造成UI线程阻塞。
其实,我们SurfaceView中包含一个专门用于绘制的Surfaace,Surface中包含一个Canvas
getHolder–>SurfaceHolder
holder–>Canvas +管理SurfaceView的生命周期
surfaceCreated
surfaceChanged
surfaceDestoryed
public class LuckyPan extends SurfaceView implements Callback, Runnable {
private SurfaceHolder mHolder;
private Canvas mCanvas;
/**
* 用于绘制的线程
*/
private Thread t;
/**
* 线程的绘制开光
*/
private boolean isRuning;
/**
* 盘块的奖项
*/
private String[] mStrs = new String[] { "单反相机", "Ipad", "恭喜发财", "Iphone",
"服装一套", "恭喜发财" };
/***
* 奖项的图片
*/
private int[] mImgs = new int[] { R.drawable.danfan, R.drawable.ipad,
R.drawable.xialian, R.drawable.iphone, R.drawable.meizi,
R.drawable.xialian };
/**
* 与图片相对的Bitmap
*/
private Bitmap[] mImgsBitmap;
/***
* 盘块的颜色
*/
private int[] mColors = new int[] { 0xffffc300, 0xfff17e01, 0xffffc300,
0xfff17e01, 0xffffc300, 0xfff17e01 };
private int mItemCount = 6;
/**
* 整个盘块的范围
*/
private RectF mRange = new RectF();
/**
* 整个盘块的直径
*/
private int mRadius;
/**
* 绘制盘块的画笔
*/
private Paint mArcPaint;
/***
* 绘制文本的画笔
*/