1.概念
[size=xx-small;]SurfaceView是View类的子类,可以直接从内存或者DMA等硬件接口取得图像数据,是个非常重要的绘图视图。它的特性是:可以在主线程之外的线程中向屏幕绘图上。这样可以避免画图任务繁重的时候造成主线程阻塞,从而提高了程序的反应速度。在游戏开发中多用到SurfaceView,游戏中的背景、人物、动画等等尽量在画布canvas中画出。[/size]
2.实现方法
1)实现步骤
a.继承SurfaceView
b.实现SurfaceHolder.Callback接口
2)需要重写的方法
[code="java"](1)public void surfaceChanged(SurfaceHolder holder,int format,int width,int height){} //在surface的大小发生改变时激发
(2)public void surfaceCreated(SurfaceHolder holder){} //在创建时激发,一般在这里调用画图的线程。
(3)public void surfaceDestroyed(SurfaceHolder holder) {} //销毁时激发,一般在这里将画图的线程停止、释放。
3)SurfaceHolder
SurfaceHolder,surface的控制器,用来操纵surface。处理它的Canvas上画的效果和动画,控制表面,大小,像素等。
几个需要注意的方法:
[code="java"](1)、abstract void addCallback(SurfaceHolder.Callback callback);
// 给SurfaceView当前的持有者一个回调对象。
(2)、abstract Canvas lockCanvas();
// 锁定画布,一般在锁定后就可以通过其返回的画布对象Canvas,在其上面画图等操作了。
(3)、abstract Canvas lockCanvas(Rect dirty);
// 锁定画布的某个区域进行画图等..因为画完图后,会调用下面的unlockCanvasAndPost来改变显示内容。
// 相对部分内存要求比较高的游戏来说,可以不用重画dirty外的其它区域的像素,可以提高速度。
(4)、abstract void unlockCanvasAndPost(Canvas canvas);
// 结束锁定画图,并提交改变。
4)总结整个过程
继承SurfaceView并实现SurfaceHolder.Callback接口 ---->
SurfaceView.getHolder()获得SurfaceHolder对象 ---->
SurfaceHolder.addCallback(callback)添加回调函数---->
SurfaceHolder.lockCanvas()获得Canvas对象并锁定画布---->
Canvas绘画 ---->
SurfaceHolder.unlockCanvasAndPost(Canvas canvas)结束锁定画图,
并提交改变,将图形显示。
相关推荐
本文档主要讲述的是Android之SurfaceView使用总结;SurfaceView是View类的子类,可以直接从内存或者DMA等硬件接口取得图像数据,是个非常重要的绘图视图。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来...
2. **合并截图**:由于`SurfaceView`通常位于其他视图之上,我们需要先截取`SurfaceView`下面的布局,然后再将`SurfaceView`的内容合并到同一张`Bitmap`中。可以使用`View.draw()`方法,传入一个`Canvas`对象,将...
1. **使用dp单位**:Android推荐使用密度无关像素(dp)作为尺寸单位,而不是像素(px)。dp可以在不同密度的屏幕上保持一致的视觉大小。 2. **支持多种屏幕尺寸**:在res目录下创建不同尺寸的资源文件夹(如layout...
总结起来,实现Android圆形相机预览窗口需要对SurfaceView有深入的理解,包括如何自定义视图、绘制路径以及与相机的交互。通过这个过程,开发者不仅可以创建独特的用户界面,还能提升应用程序的创新性和用户体验。在...
总结,SurfaceView是Android中用于高性能图形绘制的重要组件,它的核心在于能够独立于主线程进行绘图,提高应用程序的响应速度。掌握SurfaceView的使用和优化技巧,对于开发游戏、视频播放等需要高效渲染的应用至关...
SurfaceView和TextureView均继承于android.view.View 与其它View不同的是,两者都能在独立的线程中绘制和渲染,在专用的GPU线程中大大提高渲染的性能。 一、SurfaceView专门提供了嵌入视图层级的绘制界面,开发者...
总结来说,当Android内置的动画机制无法满足高性能需求时,`SurfaceView`是一个很好的选择。通过利用其独立的渲染线程和硬件加速能力,我们可以实现更加流畅的动画效果,特别适合处理复杂的图形操作和游戏场景。在...
### Android游戏框架SurfaceView介绍 #### 一、SurfaceView与游戏开发 在Android平台上开发游戏时,SurfaceView是...对于希望在Android平台上进行游戏开发的开发者来说,熟练掌握SurfaceView的使用技巧是非常必要的。
总结来说,Android中的摄像头操作涉及Intent的使用来调用系统相机,以及SurfaceView和Camera类的结合来实现自定义相机功能。了解这些知识点对于开发涉及相机的应用至关重要,特别是对于希望深入学习Android多媒体...
总结来说,利用Android的SurfaceView,结合基本的物理原理,我们可以创建出一个逼真的小球落下并弹起的动画。这是一个很好的起点,对于想要深入Android游戏开发的人来说,可以进一步扩展到更复杂的游戏机制,如多...
总结起来,SurfaceView是Android系统为高性能图形处理设计的一个强大工具,它允许开发者在后台线程中进行高效且无闪烁的绘图操作,从而优化应用性能,提高用户体验。通过实践"SurfaceView-Sample-master.zip"中的...
以上就是关于"迷你小鸟"Android游戏使用SurfaceView开发的详细讲解,希望对你在Android游戏编程的学习之路上有所帮助。接下来,你可以尝试添加更多的元素和功能,比如音效、动画效果,让游戏更加丰富有趣。祝你在...
总结来说,解决SurfaceView透明覆盖问题的关键在于使用TextureView,并正确管理绘制和动画。通过这种方式,我们不仅可以实现透明效果,还能方便地实现圆盘或其他复杂的视图功能。在实际项目中,可以根据具体需求进行...
总结,SurfaceView是Android中实现高性能图形绘制的重要工具,通过SurfaceHolder提供的API,开发者可以在后台线程中安全、高效地更新画面。理解并熟练运用SurfaceView的绘图API,可以极大地提升Android应用的视觉...
在这个"Android进阶篇之引导页系列之强大的SurfaceView实现动画引导页(2)"中,我们将深入探讨如何利用SurfaceView来创建动态且引人入胜的引导页动画。 SurfaceView是Android系统提供的一种特殊视图,它允许开发者...
总结来说,实现Android中的风车动画效果,关键在于理解SurfaceView的工作机制,合理利用Matrix进行几何变换,以及有效地控制动画的更新频率。通过以上步骤,我们可以创建出具有逼真动态效果的风车,为用户带来更佳的...
本项目涉及到的核心技术包括使用SurfaceView与Camera交互、实时视频流处理、H264编码以及通过Socket进行网络传输。 首先,`SurfaceView`是Android系统提供的一种用于显示多媒体内容的视图组件,它特别适合于处理高...
总结,通过学习和实践这个Flabby Bird游戏,开发者不仅能掌握Android SurfaceView的用法,还能了解到游戏开发的基本流程,包括游戏循环、图形绘制、用户输入处理以及简单的物理模拟。这对于进一步开发复杂的Android...
本文将深入探讨如何使用SurfaceView在Android中实现类似墨迹天气的风车效果。SurfaceView是Android系统提供的一种特殊类型的View,它为高性能的图形绘制提供了低级别的硬件访问权限,适合于进行复杂的动画或视频播放...