Android开发_SurfaceView
SurfaceView介绍
SurfaceView是视图(View)的继承类,这个视图里内嵌了一个专门用于绘制的Surface。你可以控制这个Surface的格式和尺寸。Surfaceview控制这个Surface的绘制位置。
surface是纵深排序(Z-ordered)的,这表明它总在自己所在窗口的后面。surfaceview提供了一个可见区域,只有在这个可见区域内的surface部分内容才可见,可见区域外的部分不可见。surface的排版显示受到视图层级关系的影响,它的兄弟视图结点会在顶端显示。这意味者 surface的内容会被它的兄弟视图遮挡,这一特性可以用来放置遮盖物(overlays)(例如,文本和按钮等控件)。注意,如果surface上面有透明控件,那么它的每次变化都会引起框架重新计算它和顶层控件的透明效果,这会影响性能。
你可以通过SurfaceHolder接口访问这个surface,getHolder()方法可以得到这个接口。
surfaceview变得可见时,surface被创建;surfaceview隐藏前,surface被销毁。这样能节省资源。如果你要查看 surface被创建和销毁的时机,可以重载surfaceCreated(SurfaceHolder)和 surfaceDestroyed(SurfaceHolder)。
surfaceview的核心在于提供了两个线程:UI线程和渲染线程。这里应注意:
1> 所有SurfaceView和SurfaceHolder.Callback的方法都应该在UI线程里调用,一般来说就是应用程序主线程。渲染线程所要访问的各种变量应该作同步处理。
2> 由于surface可能被销毁,它只在SurfaceHolder.Callback.surfaceCreated()和 SurfaceHolder.Callback.surfaceDestroyed()之间有效,所以要确保渲染线程访问的是合法有效的surface。
SurfaceView应用
使用SurfaceView来绘图一般要实现SurfaceHolder.Callback接口,实现该接口要重新下面的方法
<span style="font-size:18px;">@Override
public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {}@Override
public void surfaceCreated(SurfaceHolder arg0) {draw();
}@Override
public void surfaceDestroyed(SurfaceHolder arg0) {}</span>
SurfaceView实例
public class MyView extends SurfaceView implements SurfaceHolder.Callback {private Paint paint;// 画笔对象public MyView(Context context) {super(context);// 创建画笔paint = new Paint();paint.setColor(Color.RED);getHolder().addCallback(this);}@Overridepublic void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {}@Overridepublic void surfaceCreated(SurfaceHolder arg0) {draw();}@Overridepublic void surfaceDestroyed(SurfaceHolder arg0) {}public void draw() {// 锁定绘图画布Canvas canvas = getHolder().lockCanvas();canvas.save();// 保持当前状态canvas.drawColor(Color.WHITE);// 设置画布的颜色canvas.drawRect(0, 0, 100, 100, paint);// 绘制矩形canvas.restore();// 解锁绘图画布getHolder().unlockCanvasAndPost(canvas);}}
Android开发_SurfaceView相关推荐
- Android环境搭建和Android HelloWorld—Android开发环境搭建
Android_Android开发环境搭建-搭建Android的开发环境 1.我考虑先下载JDK7.0,在JDK的安装中,考虑一般SDK都是向上兼容的,于是选择了最高的版本7.0 这里是我总结的详细的 ...
- java安卓开发工具_推荐几个非常实用的Android开发工具
工欲善其事,必先利其器.我们进行Android开发也要有好的开发工具辅助才能更好更高效的完成各种开发,为用户提供更实用的应用程序.本文就为大家推荐几个非常实用的Android开发工具,及几个常用的编辑 ...
- android 网络编程实现,Android开发使用HttpURLConnection进行网络编程详解【附源码下载】...
本文实例讲述了Android开发使用HttpURLConnection进行网络编程.分享给大家供大家参考,具体如下: --HttpURLConnection URLConnection已经可以非常方便 ...
- linux 浏览器源码下载,Android开发:图片浏览器源码
Android 图片浏览器源码,是你学习Android很好的例子,希望对你的学习有帮助. main.xml android:layout_width="fill_parent" a ...
- 2017-2018-2 20165236 实验四《Android开发基础》实验报告
2017-2018-2 20165236 实验四<Android开发基础>实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:郭金涛 ...
- Android开发权威指南(第2版)新书发布
<Android 开发权威指南(第二版)>是畅销书<Android开发权威指南>的升级版,内容更新超过80%,是一本全面介绍Android应用开发的专著,拥有45 章精彩内容供 ...
- indows上的android开发环境软件架构5
(二)实验要求: ? 修改按下button 显示的内容中添加上自己的学号姓名: ? 添加一个按钮,按钮名称为"退出",并且为这个按钮添加事件代码,使得点击这个按钮后退 出程序.事件 ...
- 折叠屏就要来了,适配逼死 Android 开发?
1. 异型屏还没适配好,折叠屏就要来了,Android 的碎片化,让开发者又多掉了不少头发. 北京时间 11 月 8 日,三星在旧金山向开发者发布了一款可折叠屏幕手机.并表示,新技术需要开发者调整其 ...
- 《ArcGIS Runtime SDK for Android开发笔记》——(6)、基于Android Studio的ArcGIS Android工程结构解析...
1.前言 Android Studio 是第一个Google官方的 Android 开发环境.其他工具,例如 Eclipse,在 Android Studio 发布之前已经有了大规模的使用.为了帮助开 ...
最新文章
- ashx是什么文件,如何创建[转]
- matlab径向分布函数作图_分子动力学的径向分布函数绘制
- 使用Maven打包你的应用——maven-jar-plugin maven-assembly-plugin maven-shade-plugin
- python time智能等待_python中等待怎么表示
- mockjs语法规范、设置mockjs拦截响应时间、Mock.Random占位符生成随机数据
- jquey-整屏滚动的制作过程
- C语言基础 - 输出1-100万之间的素数
- R语言︱R社区的简单解析(CRAN、CRAN Task View)
- 广东21个地级市行政区划(2022)
- CUDA By Examples 0 - 准备工作
- php易宝支付扫码支付代码_刷脸支付将颠覆扫码支付——汇刷刷脸支付
- 互金协会:各相关机构即日起就高息现金贷等违规业务开展自查
- 致那些奋斗的青春岁月(上)
- 虚拟机中小键盘使用不了解决方案
- python中init方法的两个下划线_为什么Python中有各种各样的“_”下划线?分别有什么用?...
- USB驱动分析(三)
- android菜单_Android菜单简介
- guice框架的入门使用
- 家庭财务管理,从记账开始
- 农村老教师的爱情故事
热门文章
- OSChina 周二乱弹 —— 少侠,不可以
- 单纯形法的计算机方法的实现,线性规划问题中单纯形法的计算机求解.pdf
- Kitty Spangles Solitaire for Mac(趣味纸牌游戏)
- HTML自动售卖机程序,一种自动售卖机的货道组件的制作方法
- 谈谈追踪前沿学术研究的技巧
- SIGIR 2021大奖出炉!Salton奖授予UIUC翟成祥教授
- SQL Server 2012 下载、安装详细教程
- 代码审计--CatfishCMS文件上传漏洞
- 调节e18-d80nk的测量距离_经纬仪施工测量详细使用教程,比课本还具体!比老师教的还详细...
- 轻松学Linux系列课程-赵永刚-专题视频课程