自定义ViewGroup与SurfaceView

自定义ViewGroup

这里写图片描述
所有的控件都是直接或者间接继承自View,所有的布局,都是直接或间接继承自ViewGroup。
View是Android最基本的UI,可以在屏幕上绘制一块矩形区域。
ViewGroup是一种特殊的view,它可以包含很多个子ViewGroup,是一个用于防控件和布局的容器。
通过组合方式创建自定义控件
继承线性布局
使用layoutInflate解析自定义布局文件
添加监听事件

SurfaceView

概念
SurfaceView属于View的子类,它是专门为制作游戏而产生的,它的功能非常强大,最重要的是它支持OpenGL ES库,2D和3D的效果都可以实现。
SurfaceView默认使用双缓冲技术的,它支持在子线程中绘制图像,这样就不会阻塞主线程了,所以它更适合于游戏的开发。
重绘的原理是,程序根据时间来刷新屏幕,如果有一帧图形还没有完全绘制结束,程序就开始刷新屏幕,这样就造成瞬间屏幕闪烁,画面很不美观,所以双缓冲的技术就诞生了。它存在的目的就是解决屏幕闪烁的问题。

SurfaceHolder
显示一个surface的抽象接口,使你可以控制surface的大小和格式,以及在surface上编辑像素,和监视surface的改变。
这个接口通过SurfaceView类实现。

//给SurfaceView当前的持有者一个回调对象。
Abstract void addCallback(SurfaceHolder.Callback callback);

//锁定画布,一般在锁定后就可以通过其返回Canvas,在其上面画图等操作了。
Abstract Canas lockCanvas();
//结束锁定画图,并提交改变。
Abstract void unlockCanvasAndPost(Canvas canvas );
SurfaceView的使用方法:
继承SurfaceView
实现接口SurfaceHolder.Callback
获取SurfaceHolder的对象并设置相关的参数
创建一个线程,在线程中进行绘制

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章