`
dengzhangtao
  • 浏览: 679058 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

android 硬件加速

 
阅读更多
 
Android从3.0(API Level 11)开始,在绘制View的时候支持硬件加速,充分利用GPU的特性,使得绘制更加平滑,但是会多消耗一些内存。(在android4.0源码的settings里,就用到两application级别的硬件加速,用来平滑的显示流量和电量使用情况的图)


      开启或关闭硬件加速:

      由于硬件加速自身并非完美无缺,所以Android提供选项来打开或者关闭硬件加速,默认是关闭。可以在4个级别上打开或者关闭硬件加速:

      Application级别:<applicationandroid:hardwareAccelerated="true" ...>

      Activity级别:<activity android:hardwareAccelerated="false" ...>

      Window级别:

getWindow().setFlags(
    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
      注意:目前为止,Android还不支持在Window级别关闭硬件加速。

      View级别:

myView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
      注意:目前为止,Android还不支持在View级别开启硬件加速。

      检测当前是否启用了硬件加速:


// 方法一
// 此方法返回true,如果myView挂在一个开启了硬件加速的Window之下,
// 也就是说,它在绘制的时候不一定使用了硬件加速,getDrawingCache
myView.isHardwareAccelerated();
                       
// 方法二
// 返回true,如果canvas在绘制的时候启用了硬件加速
// 尽量采用此方法来判断是否开启了硬件加速
canvas.isHardwareAccelerated();

      理解View的绘制模型:

      1.没有硬件加速:invalidate the view hierarchy ------> draw the view hierarchy

      2.有硬件加速:invalidate the view hierarchy ------> record and update the display list ------> draw the display list

      硬件加速的限制:

      目前,Android对硬件加速的支持并非完美,有些绘制操作在开启硬件加速的情况下不能正常工作(具体的列表可以参考Android开发者文档)。

      不过Android可以保证内置的组件和应用支持硬件加速。因此,如果应用中只使用了标准UI组件,可以放心开启硬件加速。

      随着Android的版本升级,相信一段时间之后,硬件加速可以得到完美的支持。

      开启硬件加速之后的异常反应:

      1.某些UI元素没有显示:可能是没有调用invalidate

      2.某些UI元素没有更新:可能是没有调用invalidate

      3.绘制不正确:可能使用了不支持硬件加速的操作, 需要关闭硬件加速或者绕过该操作

      4.抛出异常:可能使用了不支持硬件加速的操作, 需要关闭硬件加速或者绕过该操作

0
3
分享到:
评论

相关推荐

    android硬件加速离线网页一份

    android硬件加速离线网页一份

    理解Android硬件加速原理(小白文)

    理解Android硬件加速原理 Android硬件加速是指依赖GPU实现图形绘制加速,即将图形绘制任务交由GPU处理,而不是CPU。这种方式可以大幅度提高图形绘制的速度和效率。Android系统中,硬件加速可以分为两部分:前期策略...

    浅谈Android硬件加速原理与实现简介

    "浅谈Android硬件加速原理与实现简介" 本文主要介绍了Android硬件加速原理与实现简介,从底层硬件原理到上层代码实现,对硬件加速技术进行简单介绍。 硬件加速原理: 从底层硬件原理来看,硬件加速主要是通过将CPU...

    处理android bitmap oom 2.0版本关闭了硬件加速

    "处理android bitmap oom 2.0版本关闭了硬件加速"这一主题,关注的是如何在Android 2.0版本及其后续版本中避免Bitmap导致的内存溢出,以及硬件加速在这个过程中的角色。 首先,理解硬件加速的概念至关重要。在...

    Android代码-使用硬件加速提高安卓动画性能

    使用硬件加速会让动画绘制的更快,因为硬件会把图层缓存在GPU上。  &gt;用法    用法很简单关键方法是View.setLayerType()    1. 在开始动画时调用View.setLayerType(View.LAYER_TYPE_HARDWARE, null)  2. 运行...

    Android如何使用GPU硬件加速3D游戏

    Android 如何使用 GPU 硬件加速 3D 游戏 Android 作为一个流行的移动操作系统,具有强大的图形处理能力,其中 GPU 硬件加速是提高游戏性能的关键。下面将介绍 Android 中如何使用 GPU 硬件加速原理和游戏 3D 性能...

    详解Android开发中硬件加速支持的使用方法

    Android从3.0(API Level 11)开始,在绘制View的时候支持硬件加速,充分利用GPU的特性,使得绘制更加平滑,但是会多消耗一些内存。  开启或关闭硬件加速:  由于硬件加速自身并非完美无缺,所以Android提供选项来...

    android 显示yuv图片

    可以使用`Android硬件加速器`(如`renderscript`或`OpenGL ES`)或者手动实现转换算法。 4. **创建Bitmap**:将转换后的RGB数据填充到一个`Bitmap`对象中,指定合适的配置,如ARGB_8888。 5. **设置ImageView**:...

    Android虚拟机加速器 intel.7z

    通常,这种加速器会利用Intel的硬件加速技术,如VT-x(Virtualization Technology for x86)和EPT(Extended Page Tables),这些技术能够更高效地管理虚拟化内存,降低CPU在虚拟环境中的开销。 VT-x是一种硬件辅助...

    android 3D demo

    2. **Android硬件加速**:Android 2.0版本后,默认启用了硬件加速,使得开发者可以利用设备GPU来处理3D图形,提高了性能和效率。 3. **Android SDK中的3D API**:Android SDK提供了`GLSurfaceView`组件,用于显示...

    Qt On Android核心编程 源码

    Qt Quick (QML)可以充分利用Android硬件加速特性,通过QtQuickControls2实现原生风格的界面。源码中可能会包含如何在QML中调用Android服务和API的示例。 5. **事件处理与多线程** 在Android上,Qt应用通常在一个...

    最新ffmpeg 4.0.2 android 可用so库

    6. **硬件加速**:FFmpeg 4.0.2版本包含对Android硬件加速的支持,例如使用硬件解码器处理H.264或HEVC视频流,可以显著降低CPU负载并提高播放性能。 7. **优化和测试**:确保在不同型号的设备上测试库的兼容性和...

    android图片的合成(一分钟学会)

    7. **使用硬件加速**:在Android 3.0及以上版本,可以开启硬件加速以提高图片处理性能,通过在XML布局文件中设置`android硬件加速="true"`或在代码中设置`setLayerType(View.LAYER_TYPE_HARDWARE, null)`。...

    android 加速传感器的使用

    在Android系统中,加速传感器是一种重要的硬件组件,它能够感知设备在三维空间中的加速度变化,包括设备的移动、旋转以及倾斜等动作。利用这些数据,开发者可以实现各种创新的功能,比如屏幕自动旋转、计步器、游戏...

    Android_TexasInstruments

    TI的DSP产品线通过利用ARM设备,强化了对Android硬件加速的支持,从而提高了性能和功耗效率。 总结来说,TI在Android平台的应用上,不仅提供了强大的硬件支持,还与Android软件栈的灵活性和开源特性相结合,共同...

    安卓Android源码——常用图片特效处理.rar

    4. **Android硬件加速**: 自Android 3.0(Honeycomb)起,系统支持了视图的硬件加速,这使得在UI层面上实现图像特效更为高效。开发者可以通过setLayerType方法开启或关闭硬件加速。 5. **renderscript**: ...

    android学习资料

    在实际应用中,为了优化性能和用户体验,开发者还需要了解Android硬件加速的概念。Android 3.0开始引入了硬件加速机制,使得2D渲染和视频处理更有效率。通过开启硬件加速,可以提高视频播放的流畅度,降低CPU负载。 ...

Global site tag (gtag.js) - Google Analytics