`
mmdev
  • 浏览: 13243769 次
  • 性别: 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

    普通的 View 绘制在应用程序主线程中,而 SurfaceView 的 Surface 在一个独立的硬件层面上,可以由单独的线程进行更新,避免了与 UI 线程的冲突,提高了性能。SurfaceHolder 是 SurfaceView 的一个接口,提供了对 ...

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

    而双线程模式下,一个线程专门负责加载图片,另一个线程负责在SurfaceView上进行连续的绘制,这样能显著提高动画的流畅性。 以下是实现这种混搭模式的关键步骤: 1. 创建SurfaceView并获取其SurfaceHolder。...

    Android中SurfaceView截屏

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

    android SurfaceView做二维码扫描源码

    在SurfaceView上绘制一个矩形框,并通过Camera类或Camera2 API来设置摄像头的焦点和对焦区域,确保摄像头只关注矩形框内的内容。这通常需要处理Camera的PreviewCallback,获取每一帧的YUV数据,然后在内存中裁剪出...

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

    这个项目"android surfaceview自定义拍照 绘制头像轮廓"是基于网上现有的示例代码进行了修改,用于实现一个自定义的拍照功能,并且在拍摄的照片上能够绘制出人像的轮廓。下面我们将深入探讨`SurfaceView`以及如何...

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

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

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

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

    Android SurfaceView实现加载GIF动画

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

    Android SurfaceView实现人物动画

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

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

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

    android surfaceview 播放视频

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

    android上下滑动引导页 上下切换页面 手势判断 SurfaceView实现

    在Android开发中,创建一个上下滑动的引导页是一项常见的需求,主要用于向用户展示应用程序的主要功能或特性。本文将深入探讨如何实现这样一个上下切换页面的引导页,同时结合手势判断和SurfaceView技术。 首先,...

    Android开发提高

    #### Android提高第二、三篇之SurfaceView SurfaceView是Android中用于实时渲染图形的组件,特别适用于处理视频或游戏等动态视觉内容。在提高篇中,SurfaceView被细分为上下两部分进行深入讲解,这反映了其复杂性和...

    surfaceview实现抽奖转盘

    SurfaceView通过创建一个独立的Surface,并将其渲染到窗口上,允许UI更新与主线程解耦,从而提高了性能。在"surfaceview实现抽奖转盘"这个项目中,我们将会探讨如何利用SurfaceView来实现一个互动式的抽奖转盘功能。...

    Android强制设定横屏时,SurfaceView一直黑屏

    第二种方法是在XML布局文件中,为应用或特定Activity指定主题,例如使用`android:theme="@android:style/Theme.NoTitleBar.Fullscreen"`来同时去除标题栏并进入全屏模式。 需要注意的是,全屏设置可能会与横屏设置...

Global site tag (gtag.js) - Google Analytics