`
fanguanghui
  • 浏览: 96919 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

Android提高第二篇之SurfaceView的基本使用

 
阅读更多

本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处!

上次介绍MediaPlayer的时候稍微介绍了SurfaceView,SurfaceView由于可以直接从内存或者DMA等硬件接口取得图像数据,因此是个非常重要的绘图容器,这次我就用两篇文章来介绍SurfaceView的用法。网上介绍SurfaceView的用法有很多,写法也层出不同,例如继承SurfaceView类,或者继承SurfaceHolder.Callback类等,这个可以根据功能实际需要自己选择,我这里就直接在普通的用户界面调用SurfaceHolder的lockCanvas和unlockCanvasAndPost。

先来看看程序运行的截图:

截图1主要演示了直接把正弦波绘画在SurfaceView上

对比上面的左右两图,右图用.lockCanvas(null),而左图用.lockCanvas(new Rect(oldX, 0, oldX + length,
getWindowManager().getDefaultDisplay().getHeight())),对比一下两个效果,由于左图是按指定Rect绘画,所以效率会比右图的全控件绘画高些,并且在清屏之后(canvas.drawColor(Color.BLACK))不会留有上次绘画的残留。

接下来贴出main.xml的源码:

接下来贴出程序源码:

注意一下 for (int i = oldX + 1; i < length; i++) {// 绘画正弦波 这句,在.lockCanvas()指定Rect内减少循环画线的次数,可以提高绘图效率。

分享到:
评论

相关推荐

    Android提高第二篇之SurfaceView(上).doc

    在本文中,我们将深入探讨 SurfaceView 的基本用法和特性。 首先,SurfaceView 之所以高效,是因为它的渲染机制不同于普通的 View。普通的 View 绘制在应用程序主线程中,而 SurfaceView 的 Surface 在一个独立的...

    Android提高第三篇之SurfaceView与多线程的混搭.docx

    在本篇文章中,我们将深入探讨如何将SurfaceView与多线程相结合,以避免动画闪烁并提升性能。 首先,了解Android中多线程的基本概念。Android应用的主线程负责处理UI更新和用户交互,为了不阻塞主线程,复杂的计算...

    Android中SurfaceView截屏

    2. **合并截图**:由于`SurfaceView`通常位于其他视图之上,我们需要先截取`SurfaceView`下面的布局,然后再将`SurfaceView`的内容合并到同一张`Bitmap`中。可以使用`View.draw()`方法,传入一个`Canvas`对象,将...

    android SurfaceView做二维码扫描源码

    在Android开发中,实现二维码和一维码扫描功能通常涉及到多个关键知识点,其中包括SurfaceView的使用、摄像头控制、图像处理以及二维码识别库的集成。以下将详细解释这些内容。 首先,`SurfaceView`是Android系统...

    Android SurfaceView 实现实时显示摄像头视频

    本篇文章将深入探讨如何利用`SurfaceView`实现实时显示摄像头视频。 首先,我们需要了解`SurfaceView`的基本原理。`SurfaceView`包含一个独立的渲染表面,它位于窗口管理器的单独层上,与应用程序的其他UI组件分离...

    Android进阶篇之引导页系列之强大的SurfaceView实现动画引导页(2)

    在这个"Android进阶篇之引导页系列之强大的SurfaceView实现动画引导页(2)"中,我们将深入探讨如何利用SurfaceView来创建动态且引人入胜的引导页动画。 SurfaceView是Android系统提供的一种特殊视图,它允许开发者...

    Android SurfaceView实现人物动画

    在Android开发中,SurfaceView是一种特殊的视图,它允许开发者在应用程序中创建高性能的图形界面,特别是用于实现动画效果,如游戏或者视频播放等。SurfaceView拥有自己的绘图表面,与主线程分离,因此在处理复杂的...

    android surfaceview自定义拍照 绘制头像轮廓

    在Android开发中,`SurfaceView`是一个非常重要的组件,它提供了与硬件图形渲染直接交互的能力。这个项目"android surfaceview自定义拍照 绘制头像轮廓"是基于网上现有的示例代码进行了修改,用于实现一个自定义的...

    android 摇摇棒 之surfaceView vs. View--第二届 Google 暑期大学生博客分享大赛 - 2011 Android 成长篇

    这篇博客文章“android 摇摇棒 之surfaceView vs. View”探讨了在实现这一功能时,如何选择SurfaceView和View作为显示层的优缺点。在这篇文章中,作者可能会深入解析Android的传感器API,以及SurfaceView和View在...

    Android SurfaceView实现加载GIF动画

    本篇文章将深入探讨如何使用`SurfaceView`来实现加载GIF动画,这是一个常见的需求,特别是在游戏开发或者需要实时渲染场景的应用中。 首先,我们要理解`SurfaceView`的基本概念。`SurfaceView`是Android系统提供的...

    双SurfaceView的使用

    2. **创建第二个SurfaceView**:这个SurfaceView用于动态绘制图形。同样,你需要继承`SurfaceView`并实现`SurfaceHolder.Callback`接口。在这个SurfaceView上,你可以在`draw()`方法中根据需要绘制2D图形,如矩形、...

    android surfaceview 播放视频

    SurfaceView创建了一个独立的显示表面,这个表面位于应用窗口之上,与应用程序主线程分离,从而可以在后台线程中进行渲染,提高性能。这对于处理视频流非常有利,因为视频解码和渲染可以在这个独立的线程中进行,...

    surfaceview实现抽奖转盘

    SurfaceView在Android开发中是一种特殊的View,主要用于处理高性能、低延迟的图形绘制,例如游戏、视频播放或像抽奖转盘这样的复杂动画。SurfaceView通过创建一个独立的Surface,并将其渲染到窗口上,允许UI更新与...

    Android Fragment中使用SurfaceView切换时闪一下黑屏的解决办法

    总结,Android应用在使用`Fragment`和`SurfaceView`时遇到的黑屏问题,可以通过调整`Activity`的窗口格式或预加载空的`SurfaceView`来解决。这两种方法都能有效避免因`SurfaceView`布局变化导致的黑屏闪烁,提高用户...

    android 使用SurfaceView实现小球高处落下并弹起的效果

    在描述中提到的案例基于《Android游戏开发大全》第7章第2节,这通常意味着案例会涵盖基本的运动物理原理,如重力和弹性碰撞。在实现小球落下和弹起的过程中,我们需要考虑以下几点: 1. **重力**:小球下落的速度会...

Global site tag (gtag.js) - Google Analytics