修改华为荣耀U8860的官方Rom 之 状态栏透明和下拉通知栏可修改

本人虽是Rom组成员,但自知没多少技术,因为有机油提问,我才写这个教程的,不是炫耀,只想为机油造福
做Rom也没多少门道,浅显的东西已经积累了不少,深层次的东西暂时没时间和精力钻研。
希望可以帮到那些想做Rom的朋友,愿论坛更火,人才辈出。
好了,话不多说,讲方法。

首先,请确认你的电脑安装了JDK,并设置好了环境变量。
Java环境的配置是Rom修改的一个很重要的基础,如果你还想做美化的话,一个PhotoShop也是不可或缺的。
然后,你需要下载一个 apktool 工具来进行反编译。

针对Android 4.0 反编译时出现的问题,更新了工具。

点击此处到原贴下载附件

接下来,你需要了解 apktool 的基本使用方法。
网上教程铺天盖地,请自觉使用搜索引擎。

我现在假设你已经会使用 apktool 了,以Windows下修改官方B876固件为例。
假设我们将 apktool 工具放在C:\Users\XXX\apktool 目录下,XXX为你的电脑上的用户名,如我的是C:\Users\Bingo\apktool
开始->运行->cmd->在弹出的命令窗口中,输入 cd apktool 转到apktool目录。
然后将Rom中system/framework目录下的 framework-res.apk 和 framework-res-hwext.apk 复制到C:\Users\XXX\apktool目录下。
当然,我们得目标文件,Rom中 system/app目录下的 systemui.apk 也得复制到这里。

然后分别输入 apktool if framework-res.apk 命令安装framework-res.apk 中 id 为1的资源列表
输入 apktool if framework-res-hwext.apk   命令安装framework-res-hwext.apk 中的 id 为2的资源列表
这一步请务必要做,不然可能出错,更详细的说明请见此贴。 http://bbs.anzhi.com/thread-4968081-1-1.html

再接着就是反编译输入 apktool d systemui.apk命令将 systemui.apk反编译出来

重点来了,要想状态栏透明和下拉通知栏可修改,你需要修改3处。
1.systemui/res/layout目录下的 status_bar_tracking.xml 文件,
把第4行 android:background="#ff212121" 改为 android:background="@drawable/shade_bg" ,
原来此处为一种不透明的颜色,我们把它改成了 systemui/res/drawable-hdpi 里的一张名叫 shade_bg 的图片,
你可以通过修改这张图片更换下拉通知栏背景,透明、美女...各种风格随便你,图片分辨率最好接近屏幕分辨,这样效果最好。
请注意,这里只是将下拉通知栏由固定的黑色背景换为一张可以自己随时修改的图片,但其底色仍然为黑色,如需实现下拉通知栏透明,还必须修改第3步中的内容。

2.systemui/smali/com/android/systemui/statusbar 目录下的 StatusBarService.smali 文件,
看清楚,这里有很多个名字和这个类似的文件,可别看花眼了。
用记事本打开这个文件,当然,如果你电脑上安装了NotePad2,EditPlus等其他更好的工具的话则最好用这些工具,因为自带的记事本打开比较乱。
找到如下代码段,如官方B876固件里是在第1436行开始。
    iget-object v7, p0, 
Lcom/android/systemui/statusbar/StatusBarService;->mStatusBarView:Lcom/android/systemui/statusbar/StatusBarView;
    .line 466
    .local v7, view:Lcom/android/systemui/statusbar/StatusBarView;
    new-instance v0, Landroid/view/WindowManager$LayoutParams;

    const/4 v1, -0x1
    const/16 v3, 0x7d0
    const/16 v4, 0x48
    const/4 v5, 0x2
你当然也可以通过 Ctrl+F 搜索,经验证,搜索" const/4 v5, 0x2 "字串的效果是最好的,能迅速定位到这里。

然后你也只需改动最后一行  const/4 v5, 0x2 为 const/4 v5, -0x3 即可。
请注意,这里是修改状态栏的底色为透明,要想实现状态栏的透明,你还需要修改systemui/res/drawable-hdpi 里的一张名叫 statusbar_background.9.png 的图片。
如果不会处理 .9.png 格式的图片,无妨,我们可以在回编译成新的apk之后,用一张普通的480*38分辨率的图片替换进去,不影响使用。
关于替换美化,请见此教程: http://bbs.anzhi.com/thread-4721482-1-1.html

3.同样找到如下代码
.method onBarViewAttached()V
    .locals 6

    .prologue
    const/4 v1, -0x1

    .line 1348
    const/4 v0, 0x2
修改最后一行的 const/4 v0, 0x2 为 const/4 v0, -0x3 即可。

这里是修改下拉通知栏的底色为透明,否则就算你把第一步中修改的图片弄成全透明,其背后还是一团黑色。
当然,如果你的下拉通知栏不想做成透明,只想替换成普通无透明度的图片,则此处无需修改。

总结:
第一处修改,是将下拉通知栏从一个单一固定的颜色链接到一张我们可以方便地修改的图片,但其背后还有一层不透明的底色。
第二处修改,是将状态栏的底色修改为全透明,但状态栏本身的图片默认是不透明的。
要想实现状态栏透明,你还需要修改 statusbar_background.9.png 来实现(当然,还与你使用的桌面启动器有关)。
第三处修改,是将下拉通知栏的底色改为透明。

你可能感兴趣的:(华为,荣耀,U8860,状态栏,透明,美化)