宋小宝相亲1高清,p2p理财论坛,老庙黄金价格多少一克
surface相当于绘制的容器,所有view和子类都是绘制在这里面。
surfaceview是view的子类,将surface的数据显示出来。
view适用主动更新视图,不需要频繁刷新。在主线程更新ui,没有双缓冲机制。
surfaceview适用于被动更新视图,频繁刷新。通过子线程更新ui,底层实现中就实现了双缓冲机制。
surfaceholder是surface的抽象接口,操纵surface的控制器。
使用surfaceview的getholder()方法,获取surfaceholder对象
在surfaceview使用中需要的几个重要方法:
void addcallback(surfaceholder.callback var1); //为surfaceholder添加一个surfaceholder.callback回调接口 void removecallback(surfaceholder.callback var1); //从surface持有者中删除回调接口 canvas lockcanvas(); //获取canvas对象,并锁定 void unlockcanvasandpost(canvas var1); //释放同步锁,并显示 void setformat(int var1); //指定surface的像素格式,pixelformat常量 void setfixedsize(int var1, int var2); //固定surface的宽高 void setkeepscreenon(boolean var1); //false是允许屏幕关闭,true强制屏幕打开状态
实现surfaceholder.callback接口,创建surfaceview的生命周期,它有三个回调方法:
@override public void surfacecreated(surfaceholder holder) { //surface创建的时候调用 } @override public void surfacechanged(surfaceholder holder, int format, int width, int height) { //surface大小被改变的时候调用 } @override public void surfacedestroyed(surfaceholder holder) { //surface被销毁的时候调用 }
绘制方法需要在绘制前调用locakcanvas锁定画布,得到画布。
绘制完成后需要调用lockcanvasandpost方法来解锁画布,显示。
@override public void run() { draw(); } private void draw() { try { mcanvas=mholder.lockcanvas(); //绘制 }catch (exception e){ }finally { //避免黑屏情况,解锁画布 if(mcanvas!=null){ mholder.unlockcanvasandpost(mcanvas); } } }
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Android apk 项目一键打包并上传到蒲公英的实现方法
Android 自定义LineLayout实现满屏任意拖动功能的示例代码
android 限制某个操作每天只能操作指定的次数(示例代码详解)
Android 集成 google 登录并获取性别等隐私信息的实现代码
网友评论