Android游戏开发之SurfaceView的使用-android学习之旅(五)
2015-05-13 18:24
633 查看
SurfaceView和View的区别
View是在ui主线程中,直接响应用户的操作,以及任务的分发,但是任务比较复杂会出现阻塞。SurfaceView则不会出现这种问题,以为它直接从内存等取得图像,更为重要的是,SurfaceView可以通过主线程之外的线程来改变Ui。
使用
对于ui的更新分为主动更新和被动更新,对于被动更新,是通过时间出发控件的更新,频率一般比较低,所以倾向选择View来完成。对于主动更新,更新频率较快,比如定时器更新画面,一版会采取SurfaceView。
实例代码:
public class MyView extends SurfaceView implements SurfaceHolder.Callback{ public MyView(Context context) { super(context); getHolder().addCallback(this); } public void draw(){ //锁定画布 Canvas canvas = getHolder().lockCanvas(); //结束之后记得解锁画布 getHolder().unlockCanvasAndPost(canvas); } @Override public void surfaceCreated(SurfaceHolder holder) { // TODO Auto-generated method stub } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // TODO Auto-generated method stub } @Override public void surfaceDestroyed(SurfaceHolder holder) { // TODO Auto-generated method stub } }
用SuifaceView绘制简单图形
绘制了一个红色的正方形:public class MyView extends SurfaceView implements SurfaceHolder.Callback{ private Paint paint = null; public MyView(Context context) { super(context); paint = new Paint(); paint.setColor(Color.RED); getHolder().addCallback(this); } public void draw(){ Canvas canvas = getHolder().lockCanvas(); canvas.drawColor(Color.WHITE); canvas.drawRect(0, 0, 100, 100, paint); getHolder().unlockCanvasAndPost(canvas); } @Override public void surfaceCreated(SurfaceHolder holder) { // TODO Auto-generated method stub draw(); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // TODO Auto-generated method stub } @Override public void surfaceDestroyed(SurfaceHolder holder) { // TODO Auto-generated method stub } }
注意一定要在surfaceCreated方法之后开始绘制,一定要在surfaceDestroyed方法之前结束绘制。
相关文章推荐
- Android游戏开发之SurfaceView的使用-android学习之旅(五)
- Android游戏开发之SurfaceView的使用-android学习之旅(五)
- Android 游戏开发之SurfaceView的简单使用
- 【Android游戏开发十四】深入Animation,在SurfaceView中照样使用Android—Tween Animation!
- android:使用SurfaceView游戏开发简单屏幕适配方法
- Android游戏开发14:SurfaceView中使用Tween Animation渐变动画
- Android 开发中的游戏开发使用 View 还是 SurfaceView
- (转)【Android游戏开发十四】深入Animation,在SurfaceView中照样使用Android—Tween Animation!
- Android 游戏开发笔记一、入门之SurfaceView的使用
- Android游戏开发学习(5)--实现Button悬浮于与SurfaceView之上
- [Android游戏开发学习笔记]View和SurfaceView
- [Android游戏开发学习笔记]View和SurfaceView
- android开发中使用surfaceView开发游戏
- Android开发中的游戏开发使用View还是SurfaceView?
- 【Android游戏开发十四】深入Animation,在SurfaceView中照样使用Android—Tween Animation!
- 【Android2D游戏开发十四】(未完待续)手把手教你在SurfaceView中照样使用Android 动画—Tween Animation!
- 【Android游戏开发十四】深入Animation,在SurfaceView中照样使用Android—Tween Animation!
- 【Android游戏开发十四】深入Animation,在SurfaceView中照样使用Android—Tween Animation!
- 【Android游戏开发十四】深入Animation,在SurfaceView中照样使用Android—Tween Animation!
- 【Android游戏开发十四】深入Animation,在SurfaceView中照样使用Android—Tween Animation!