SurfaceView(8)自定义SurfaceView的简单示例

代码如下:

 1 public class CustomSurfaceView extends SurfaceView implements SurfaceHolder.Callback{
 2     
 3     private Paint paint;
 4     private Container container;
 5     private Circle circle;
 6     private Rect rect;
 7     
 8     private Timer timer;
 9     private TimerTask timerTask;
10     
11     public void startTimer(){
12         timer = new Timer();
13         timerTask = new TimerTask() {
14             @Override
15             public void run() {
16                 draw();
17             }
18         };
19         timer.schedule(timerTask, 100,100);
20     }
21     public void stopTimer(){
22         if (timer != null) {
23             timer.cancel();
24         }
25     }
26     public void draw(){
27         int h = getHeight();
28         int w = getWidth();
29         Canvas canvas = getHolder().lockCanvas();
30         canvas.drawColor(Color.WHITE);
31         canvas.drawRect(w/4, h/4, 200, 200, paint);
32 
33         canvas.save();
34         canvas.rotate(45,w/2,h/2);
35         canvas.drawText("text", w/2, h/2, paint);
36         canvas.restore();
37         
38         canvas.drawLine(0, 0, w, h, paint);
39         canvas.drawLine(w, 0, 0,h, paint);
40         
41         
42         container.draw(canvas);
43         getHolder().unlockCanvasAndPost(canvas);
44     }
45     
46     public CustomSurfaceView(Context context) {
47         super(context);
48         paint = new Paint();
49         paint.setColor(Color.RED);
50         getHolder().addCallback(this);
51         container = new Container();
52         rect = new Rect();
53         circle = new Circle();
54         rect.addChildView(circle);
55         container.addChildView(rect);
56     }
57     @Override
58     public void surfaceCreated(SurfaceHolder holder) {
59         startTimer();
60     }
61 
62     //在surface的大小发生改变时激发
63     @Override
64     public void surfaceChanged(SurfaceHolder holder, int format, int width,
65             int height) {
66     }
67 
68     @Override
69     public void surfaceDestroyed(SurfaceHolder holder) {
70         stopTimer();        
71     }
72 
73 }

 

posted @ 2015-06-10 22:19  f9q  阅读(802)  评论(0)    收藏  举报