文档章节

android中的surfaceview控件

V
 Vincent540329
发布于 2015/07/09 13:10
字数 524
阅读 443
收藏 10

SurfaceView是继承于View类的,有绘制动态图片,播放视频的作用。View负责在主线程中更新动画,而在SurfaceView是在一个新线程中更新动画,并且它是一个2D的画布效果,将自己放置于屏幕的最低层进行图画的显示,

SurfaceView的使用方法:

1.当单独建立一个SurfaceView的工程

需要将这个工程继承SurfaceView 并接口于SurfaceHolderCallbackRunnable  其中SurfaceHolder是用来监听画布,Runnable则是用来开启一个新进程,在进程中进行画面的绘制。

public class GameViewOK extends SurfaceView implements Callback, Runnable

完成继承和接口后,会有三个构造函数和一个重载函数,分别为:surfaceCreatedsurfaceChangedsurfaceDestroyed以及GameViewOK(例子),其中三个构造函数分别表示SurfaceView在创建,改变和毁坏时要做的相关处理,一般图形的绘制放在surfaceChanged中进行。在重载函数中使用代码

surfaceHolder = this.getHolder();

surfaceHolder.addCallback(this);//注册回调方法

来设置SurfaceHoler并添加回调方法,不添加这个回调会报空指针异常,SurfaceHolder相当于遥控器来控制SurfaceView

SurfaceView主要用来绘制图片,通过线程来实现画面的动画效果,在绘制图画的过程中,需要三个步骤:

(1)获取画布并锁定画布

Canves = SurfaceHolder.lockCanvas()

(2)然后在画布中进行绘画的操作

(3)绘制完毕后,使用SurfaceHolder.unlockCanvas方法来解锁画布,以供后续的操作。

2.mianActivity中添加surfaceview

同样是先建立一个JAVA类继承surfaceview并接口于surfaceHolder.Callback,Runnable。然后在mainActivity中创建类对象,在setContext中添加此类。例如: gameViewOK = new GameViewOK(this);

  setContentView(gameViewOK);

 

3.surfaceView上添加控件

当需要在SurfaceView上添加控件时,只需将继承于SurfaceView的类以控件的形式添加到布局文件即可。

<ControlTool.surfaceView

    android:layout_width="fill_parent"

 android:layout_height="fill_parent"/>

这样就可以在surfaceview上添加其他控件。

© 著作权归作者所有

V
粉丝 0
博文 4
码字总数 2451
作品 0
武汉
程序员
私信 提问
Android音视频开发之使用Camera采集视频

在 Android 平台预览相机画面主要用到的是 SurfaceView、TextureView 这两个类。那么它们的区别是什么呢? SurfaceView 可以在独立的线程中进行绘制,不会影响主线程。它使用双缓冲机制,播放...

落英坠露
2018/11/03
0
0
解决SurfaceView调用setZOrderOnTop(true)遮挡其他控件的问题

SurfaceView遮挡其他控件的项目背景: 最近在做播放器项目,由于底层实现是用Surface和OpenGL切换渲染,所以在布局里面同时使用了GLSurfaceView和SurfaceView,同时播放控制按钮是自定义的,...

亭子happy
2018/08/27
126
0
获取Android设备上的详细的摄像头信息

如何获取Android设备上的详细的摄像头信息呢? 目前Samsung的Galaxy Tab和Nexus S均有前置摄像头,获取Android摄像头的详细信息,在Android 2.3SDK中得到了增强: 在android.hardware.Camera类...

子曰疯
2013/12/26
1W
2
在Android上使用ZXing识别条码/二维码

本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处! 越来越多的手机具备自动对焦的拍摄功能,这也意味着这些手机可以具备条码扫描的功能.......手机具备条码扫描的功能,可以优化购...

zungyiu
2010/12/29
5.1K
0
Android SurfaceView简例

Android SurfaceView简例 Android中各的SurfaceView和View有很大的不同,两者应用场景不同。大多数View能做的事情SurfaceView也可以,但是SurfaceView效率更高。Android的View绘制过程由And...

开开心心过
2017/09/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何制作省市级别上钻下取的在线疫情地图

目前大多数省级尺度的疫情地图,不能精细的表达各个城市的疫情差异和发展事态。纯粹市级维度的地图由于全国市比较多,很难快速查看自己所在省市的疫情分布情况。我们制作一个省市下钻上取的疫...

空间数据可视化
今天
113
0
用Markdown编程之虚转实

没变成机器码之前,撒都是虚的。而要变成机器码必须有长度。有长度后必然是结构划分。之后就是逻辑正确。而逻辑正确可以看成正确的值。 由此,基础行为有:长度的比对转换、结构的解析、值的...

dwcz
今天
80
0
ASP之ADODB.Stream

ASP 其实很强,真的,很强... 但是,也很难,难就难在没有文档啊~~~ 因为 ASP 经常会用到很多服务器对象,本文记录下在 ASP 中的 Stream(流)操作。 ADODB.Stream 未完待续,敬请期待......

AioDiage
今天
71
0
从源码看世界:Springboot整合Mybatis后到底做了什么

在Mybatis一次数据库操作过程的文章中,我展示了使用Mybatis操作数据库的demo,但实际使用时并不会这里写代码,因为一般都会使用springboot了,那现在我们一起来看看Springboot整合Mybatis之...

壞天空_囝仔
今天
46
0
【自用】 Flutter GestureDetector 给控件添加监听事件

Dart GestureDetector( child: Text("xxxx"), onTap: () => _onXxxxCall(index), ) PS:自用的 不做解释 作者:一个吃货帅锅...

Tensor丨思悟
今天
67
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部