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。
实现SurfaceHolder接口的类里,可以通过重写surfaceChanged,surfaceCreated,surfaceDestroyed来控制SurfaceView。
surfaceChanged:SurfaceView被改变时,该回调函数被调用。
surfaceCreated:SurfaceView在第一次创建时,回调函数被调用。
surfaceDestroyed:SurfaceView被销毁是,回调函数被调用。
Sample请参考:http://yanwenjinhaha.iteye.com/admin/blogs/2043016
分享到:
相关推荐
本项目提供的"封装好的Android视频传输SurfaceView类"是针对视频数据处理的一个实用工具,由CVideoWriter和CVideoRead两个类组成,实现了视频数据的读取和写入。 首先,我们来看`CVideoWriter`类。这个类通常是用来...
在Android应用开发中,View类和SurfaceView类是两个至关重要的组件,它们分别负责界面的显示和复杂的多媒体处理。理解这两个类的特性和用途对于创建高效、流畅的应用至关重要。 首先,我们来看看Android的基础视图...
Activity加载自定义的SurfaceView-> SurfaceView 构造器中启动线程A,循环改变SurfaceView的x,y坐标,当x,y坐标到某点时设渐显标志位picAlphaFlag为true -> Surface创建时即surfaceCreated中,启动线程B,循环根据...
- 一个自定义的SurfaceView类,继承自SurfaceView,并重写相关的方法,如onDraw(),用于执行实际的绘图逻辑。 - SurfaceHolder.Callback接口的实现,用于监听Surface的状态变化。 - 在Activity或Fragment中添加...
这个源代码可能包含了一个自定义的SurfaceView类,用于实现更高效、更灵活的游戏界面。下面,我们将深入探讨SurfaceView及其在Android游戏开发中的应用。 SurfaceView是Android系统提供的一个视图组件,它允许...
在这个实例中,我们创建了一个自定义的SurfaceView类,并实现了SurfaceHolder.Callback接口。在`surfaceCreated()`方法中启动绘图线程,在`surfaceDestroyed()`方法中停止线程,确保了SurfaceView的生命周期管理。...
1. **创建自定义SurfaceView类**: 创建一个新的`SurfaceView`子类,并重写必要的方法,如`onCreateSurfaceHolder()`、`onSurfaceCreated()`、`onSurfaceChanged()`和`onSurfaceDestroyed()`。这些回调方法在`...
- `SurfaceView.java`:自定义的SurfaceView类,重写`SurfaceHolder.Callback`方法,如`surfaceCreated()`, `surfaceChanged()`, `surfaceDestroyed()`,并在这些方法中进行初始化、更新和释放资源的操作。...
SurfaceView是Android系统提供的一种...在imooc_luckypan文件中,可能包含了该项目的源代码,包括布局文件、Activity代码以及自定义的SurfaceView类,你可以通过学习这些代码来深入理解SurfaceView的使用和动画的实现。
而“SurfaceView”可能是源码文件夹,包含了实现抽奖功能的SurfaceView类和其他辅助类,如控制转盘旋转速度的类、处理用户交互的事件监听器等。 开发者可能会使用 Handler 或者 Runnable 结合 postDelayed 来控制...
1. 创建自定义SurfaceView类,并继承SurfaceView。同时,实现Callback接口和Runnable接口,以处理Surface的创建、改变和销毁,以及实现绘图的逻辑。 ```java public class CustomSurfaceView extends SurfaceView ...
也可以与MediaPlayer类配合,用于视频播放。 10. **实例分析**: 文件名`szt_SurfaceView`可能包含的是一个关于SurfaceView使用示例的代码或文档,通过学习和分析这个例子,可以更好地理解和掌握SurfaceView在实际...
这些文件可能包括一个自定义的SurfaceView类,一个Activity来托管这个SurfaceView,以及可能的布局XML文件。通过阅读和理解这些代码,开发者可以学习到如何在Android游戏中实现物理效果和动态动画。 总结来说,利用...
首先,我们需要创建一个自定义的SurfaceView类,继承自SurfaceView,并实现SurfaceHolder.Callback接口。这个接口包含三个方法:surfaceCreated()、surfaceChanged()和surfaceDestroyed(),分别在SurfaceView创建、...
- 自定义SurfaceView类:继承自SurfaceView,并实现SurfaceHolder.Callback。 - 绘制逻辑:在`onDraw()`方法中,使用Canvas和Paint进行风车的绘制。 - 动画逻辑:在独立的线程中更新风车状态,并调用`...
在实现风车动画时,我们首先需要创建一个自定义的SurfaceView类,并重写其`SurfaceHolder.Callback`接口的方法。`SurfaceCreated()`方法会在Surface准备就绪时被调用,这时可以初始化绘图相关的资源;`...
在Android游戏开发教程之二:View类与SurfaceView类中我们已经谈到,SurfaceView类是有很多优势的,所以在Android游戏开发中还是选择SurfaceView。 这里我们直接继承SurfaceView,实现SurfaceHolder.Callback接口...
在自定义的SurfaceView类中,创建一个绘制循环,在该循环中不断调用postInvalidate()来触发onDraw()方法。在onDraw()中,利用Canvas提供的drawPath()方法绘制风车叶片,然后通过矩阵的postRotate()方法更新每个叶片...
创建一个继承自SurfaceView的自定义类,重写其onDraw()方法。在这个方法里,我们将实现图片的绘制和缩放逻辑。 3. **图片加载与绘制**: 使用Bitmap对象加载图片,然后在onDraw()方法中使用Canvas绘制图片。可以...
在Android开发中,SurfaceView是一种特殊的视图,用于高效地显示动态图像,比如播放视频或者进行游戏渲染。标题“SurfaceView放大和缩小”涉及到的是如何在Android应用中实现对SurfaceView内的视频画面进行局部放大...