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相关推荐

  1. Android环境搭建和Android HelloWorld—Android开发环境搭建

    Android_Android开发环境搭建-搭建Android的开发环境 1.我考虑先下载JDK7.0,在JDK的安装中,考虑一般SDK都是向上兼容的,于是选择了最高的版本7.0 这里是我总结的详细的 ...

  2. java安卓开发工具_推荐几个非常实用的Android开发工具

    工欲善其事,必先利其器.我们进行Android开发也要有好的开发工具辅助才能更好更高效的完成各种开发,为用户提供更实用的应用程序.本文就为大家推荐几个非常实用的Android开发工具,及几个常用的编辑 ...

  3. android 网络编程实现,Android开发使用HttpURLConnection进行网络编程详解【附源码下载】...

    本文实例讲述了Android开发使用HttpURLConnection进行网络编程.分享给大家供大家参考,具体如下: --HttpURLConnection URLConnection已经可以非常方便 ...

  4. linux 浏览器源码下载,Android开发:图片浏览器源码

    Android 图片浏览器源码,是你学习Android很好的例子,希望对你的学习有帮助. main.xml android:layout_width="fill_parent" a ...

  5. 2017-2018-2 20165236 实验四《Android开发基础》实验报告

    2017-2018-2 20165236 实验四<Android开发基础>实验报告 一.实验报告封面 课程:Java程序设计       班级:1652班       姓名:郭金涛     ...

  6. Android开发权威指南(第2版)新书发布

    <Android 开发权威指南(第二版)>是畅销书<Android开发权威指南>的升级版,内容更新超过80%,是一本全面介绍Android应用开发的专著,拥有45 章精彩内容供 ...

  7. indows上的android开发环境软件架构5

    (二)实验要求: ? 修改按下button 显示的内容中添加上自己的学号姓名: ? 添加一个按钮,按钮名称为"退出",并且为这个按钮添加事件代码,使得点击这个按钮后退 出程序.事件 ...

  8. 折叠屏就要来了,适配逼死 Android 开发?

    1. 异型屏还没适配好,折叠屏就要来了,Android 的碎片化,让开发者又多掉了不少头发. 北京时间 11 月 8 日,三星在旧金山向开发者发布了一款可折叠屏幕手机.并表示,新技术需要开发者调整其 ...

  9. 《ArcGIS Runtime SDK for Android开发笔记》——(6)、基于Android Studio的ArcGIS Android工程结构解析...

    1.前言 Android Studio 是第一个Google官方的 Android 开发环境.其他工具,例如 Eclipse,在 Android Studio 发布之前已经有了大规模的使用.为了帮助开 ...

最新文章

  1. ashx是什么文件,如何创建[转]
  2. matlab径向分布函数作图_分子动力学的径向分布函数绘制
  3. 使用Maven打包你的应用——maven-jar-plugin maven-assembly-plugin maven-shade-plugin
  4. python time智能等待_python中等待怎么表示
  5. mockjs语法规范、设置mockjs拦截响应时间、Mock.Random占位符生成随机数据
  6. jquey-整屏滚动的制作过程
  7. C语言基础 - 输出1-100万之间的素数
  8. R语言︱R社区的简单解析(CRAN、CRAN Task View)
  9. 广东21个地级市行政区划(2022)
  10. CUDA By Examples 0 - 准备工作
  11. php易宝支付扫码支付代码_刷脸支付将颠覆扫码支付——汇刷刷脸支付
  12. 互金协会:各相关机构即日起就高息现金贷等违规业务开展自查
  13. 致那些奋斗的青春岁月(上)
  14. 虚拟机中小键盘使用不了解决方案
  15. python中init方法的两个下划线_为什么Python中有各种各样的“_”下划线?分别有什么用?...
  16. USB驱动分析(三)
  17. android菜单_Android菜单简介
  18. guice框架的入门使用
  19. 家庭财务管理,从记账开始
  20. 农村老教师的爱情故事

热门文章

  1. OSChina 周二乱弹 —— 少侠,不可以
  2. 单纯形法的计算机方法的实现,线性规划问题中单纯形法的计算机求解.pdf
  3. Kitty Spangles Solitaire for Mac(趣味纸牌游戏)
  4. HTML自动售卖机程序,一种自动售卖机的货道组件的制作方法
  5. 谈谈追踪前沿学术研究的技巧
  6. SIGIR 2021大奖出炉!Salton奖授予UIUC翟成祥教授
  7. SQL Server 2012 下载、安装详细教程
  8. 代码审计--CatfishCMS文件上传漏洞
  9. 调节e18-d80nk的测量距离_经纬仪施工测量详细使用教程,比课本还具体!比老师教的还详细...
  10. 轻松学Linux系列课程-赵永刚-专题视频课程