SurfaceView:
模板代码:
public class SurfaceViewText extends SurfaceView implements SurfaceHolder.Callback,Runnable{ private SurfaceHolder surfaceHolder; private boolean isDrawing; public SurfaceViewText(Context context) { super(context); //初始化 init(); } private void init() { surfaceHolder = getHolder();//获取Surface管理对象,SurfaceHolder surfaceHolder.addCallback(this);//注册SurfaceHolder setFocusable(true);//设置SurfaceView可获取焦点 setFocusableInTouchMode(true); this.setKeepScreenOn(true);//保持屏幕常亮 } @Override public void surfaceCreated(SurfaceHolder holder) { isDrawing =true; new Thread(this).start(); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } @Override public void surfaceDestroyed(SurfaceHolder holder) { isDrawing =false; } @Override public void run() { while (isDrawing){ drawUI(); } } private void drawUI() { Canvas canvas=surfaceHolder.lockCanvas(); try { drawView(canvas); }catch (Exception e){ e.printStackTrace(); }finally { surfaceHolder.unlockCanvasAndPost(canvas); } } private void drawView(Canvas canvas) { //画一些东西 } }
例子:触摸板
public class SurfaceViewText extends SurfaceView implements SurfaceHolder.Callback, Runnable { private SurfaceHolder surfaceHolder; private boolean isDrawing; private Canvas canvas; private Paint paint; private Path path; private float mLastX, mLastY;//上次的坐标 public static final int TIME_IN_FRAME = 30; public SurfaceViewText(Context context) { super(context); //初始化 init(); } private void