IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android硬件加速 -> 正文阅读

[移动开发]Android硬件加速

转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/123338017
本文出自【赵彦军的博客】

Android 硬件加速原理

Android 硬件加速原理

理解Android硬件加速原理的小白文

硬件加速控制(Controlling Hardware Acceleration)

android提供了以下四个级别的硬件加速控制:

  • Application
  • Activity
  • Window
  • View

Application级别

在应用的Android清单文件中,把下列属性添加到元素中,能够开启整个应用程序的硬件加速:

<application android:hardwareAccelerated="true" ...>

Activity级别

如果不能再应用程序级别全局打开硬件加速,那么也可以在Activity级别上进行控制。在<activity>元素中使用 android:hardwareAccelerated 属性,能够启用或禁止Activity级别的硬件加速。

以下示例启用全局的硬件加速,但却禁止了一个Activity的硬件加速:

<application android:hardwareAccelerated="true">
    <activity ... />
    <activity android:hardwareAccelerated="false" />
</application>

Window级别

如果需要更精细的控制,就可以使用下列代码来针对给定的Window来启用硬件加速:

getWindow().setFlags(
    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

注意:目前无法在Window级别禁止硬件加速。

View级别

在运行时,可以针对一个独立的View对象使用下列代码来禁止硬件加速:

//view关闭硬件加速
view.setLayerType(LAYER_TYPE_SOFTWARE, null);  

事实上,view.setLayerType(LAYER_TYPE_SOFTWARE, null)这个方法的作用并不是关闭硬件加速,只是当它的参数为LAYER_TYPE_SOFTWARE的时候,可以顺便把硬件加速关掉而已;并且除了这个方法外,Android并没有提供专门的View级别的硬件加速开关,所以它就顺便成了一个开关硬件加速的方法。

//view开启硬件加速
view.setLayerType(LAYER_TYPE_HARDWARE, null); 

判断一个View对象是否被硬件加速

有些时候,知道当前的View对象(尤其是自定义View)是否被硬件加速对应用程序来说是非常有用的。如果应用程序做了很多定制的绘图操作,并且不是所有的操作都会被新的渲染管道所支持,那么这种判断就特别有用。

有两种不同的方法来检查应用程序是否被硬件加速了:

  • View.isHardwareAccelerated():如果View对象被绑定在硬件加速的Window,则返回true
  • Canvas.isHardwareAccelerated():Canvas对象被硬件加速,则返回true

如果有必要在绘制代码中做这种检查,那么在可能的情况下,要使用Canvas.isHardwareAccelerated() 方法来代替 View.isHardwareAccelerated() 方法。这是由于,当一个 View 对象跟一个被硬件加速的窗口绑定的时候,它依然能够使用使用一个非硬件加速的Canvas对象。例如,把一个View对象绘制到缓存中的一个位图时就会发生这种情况。

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-03-10 22:41:17  更:2022-03-10 22:42:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 16:25:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码