Android overlay系统

Android overlay系统


转自:http://blog.youkuaiyun.com/harhy/article/details/8671400
视频输出系统在android中体现为overlay,overlay的意思为 :覆盖铺在…上面,既然覆盖我们要考虑主要是覆盖在什么之上,在linux显示系统中用于界面显示的一般使用帧缓存(framebuffer),framebuffer是linux系统为显示设备提供一个接口,他将显示缓冲区抽象,屏蔽图像硬件的底层差异,帧缓冲设备为标准的字符设备,主设备号为29,对应/dev/fbn设备文件,帧缓冲在linux中作为显示设备驱动程序,当应用程序需要显示东西,将显示的东西按照一定的格式放入帧缓存中,

Overlay在linux中也相当于一个帧缓存,从名字我们可以了解Overlay显示是覆盖在FB之上的,

 

verlay与FB的区别如下:

 

(1)      FB可以显示视频数据,将视频数据(YUV)转化成RGB在FB显示

(2)      Overlay始终显示在FB之上

(3)      FB刷新不会影响Overlay的显示

(4)      Overlay显示的数据为(YUV)加速视频数据的显示

(5)      FB与Overlay使用单独的显示内存

(6)      FB与Overlay叠加不需要软件关心

### Android Overlay 使用方法 #### 定义与概述 RRO (Runtime Resource Overlay) 是一种允许应用程序或系统资源被覆盖的技术,在不修改原始APK的情况下实现自定义外观或其他资源属性的功能[^1]。 #### 创建Overlay项目 为了创建一个新的overlay项目,首先需要设置`AndroidManifest.xml`文件来指定目标包名以及优先级。例如: ```xml <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.overlay"> <overlay android:targetPackage="com.target.package.name" android:priority="1"/> </manifest> ``` 这里通过`android:targetPackage`指定了要覆盖的目标应用包名称,并设置了该overlay的优先级别为最高(数值越大越优先)[^2]。 #### 编译并安装Overlay APK 编译完成后得到的`.apk`文件应当放置于设备上的特定路径以便系统能够识别它作为有效的overlay。通常推荐的位置是`/vendor/overlay/`, 如果不存在此目录,则可以考虑将其放到`/system/app/`下[^3]。 #### 实现主题切换功能 利用上述配置好的overlay机制,可以通过动态加载不同的resource overlay达到即时改变UI样式的效果。这使得开发者能够在运行时轻松地更改颜色方案、图标集或者其他视觉元素而不必重新打包整个应用程序。 #### 示例代码展示如何构建一个简单的Resource Overlay模块 下面给出一段简化版的例子说明怎样编写这样一个module: ```gradle // build.gradle 文件片段 apply plugin: 'com.android.library' android { ... } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) } ``` ```java // res/values/colors.xml 中的内容 <?xml version="1.0" encoding="utf-8"?> <resources> <!-- 自定义的颜色值 --> <color name="primaryColor">#FF009CDD</color> </resources> ``` 以上就是关于Android Overlay的基础介绍及其基本使用方式。对于更复杂的应用场景比如视频处理等方面则涉及到其他专门领域内的知识和技术细节[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值