melonl吧 关注:97贴子:2,322
  • 8回复贴,共1

4.2状态栏,下拉,全局透明教程

只看楼主收藏回复

咳咳,转的,状态栏,下透明亲测有效,全局透未测试


IP属地:广东1楼2015-02-13 12:07回复
    一、CM10状态栏透明教程
    要修改两个文件:systemui.apk和android.policy.jar
    首先反编译systemui.apk
    用Notepad++文本软件打开values\drawables.xml
    找到 <item type="drawable" name="status_bar_background">#ff000000</item>
    修改值:#ff000000,70是半透明,00是全透明,也可以是b0等..自己决定.
    然后保存。回编译进行替换,将原来的SystemUI.apk用RAR压缩程序打开,将编译后生成的文件夹build中的classes.dex和resources.arsc文件拖入原来的SystemUI.apk中,存储方式为存储。
    另外还要反编译android.policy.jar文件
    怎么反编译呢?将android.policy.jar文件用RAR压缩程序把里面的classes.dex解压到桌面并进行反编译
    用Notepad++文本软件打开smali\com\android\internal\policy\impl\PhoneWindowManager.smali文件
    找到.method public getSystemDecorRectLw(Landroid/graphics/Rect;)I将下面的
    .line 2984
    iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mStatusBar:Landroid/view/WindowManagerPolicy$WindowState;
    if-eqz v0, :cond_1b
    iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mStatusBar:Landroid/view/WindowManagerPolicy$WindowState;
    invoke-interface {v0}, Landroid/view/WindowManagerPolicy$WindowState;->getSurfaceLayer()I
    move-result v0
    .line 2986
    :goto_1a
    return v0
    .line 2985
    :cond_1b
    iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mNavigationBar:Landroid/view/WindowManagerPolicy$WindowState;
    if-eqz v0, :cond_26
    iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mNavigationBar:Landroid/view/WindowManagerPolicy$WindowState;
    invoke-interface {v0}, Landroid/view/WindowManagerPolicy$WindowState;->getSurfaceLayer()I
    move-result v0
    goto :goto_1a
    .line 2986
    :cond_26
    const/4 v0, 0x0
    goto :goto_1a
    改成:
    .line 2984
    const/4 v0, 0x0
    return v0
    保存。回编译进行替换,将原来的android.policy.jar用RAR压缩程序打开,将回编译得到的classes.dex文件拖入原来的android.policy.jar中,存储方式为存储。然后就可以将新的SystemUI.apk和android.policy.jar用RE放入手机对应目录中,修改权限后重启后就可以了。


    IP属地:广东2楼2015-02-13 12:07
    回复
      二、CM10下拉栏透明教程
      下拉栏美化,就是要修改systemUI.apk;
      还是反编,但这次不是打开res,而是要打开smali\com\android\systemui\statusbar\phone;然后用Notepad++文本软件打开PhoneStatusBar$FastColorDrawable.smali文件,
      找到
      # virtual methods
      .method public draw(Landroid/graphics/Canvas;)V将下面的
      iget v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$FastColorDrawable;->mColor:I
      改成:
      const v0, -0x50000000
      (这后面几位数值0x-70-00-00-00的意思就是0x-透明度-R-G-B三基色,可以用拾色器选出自己喜欢的背景颜色;
      保存。然后就是回编译进行替换,将原来的SystemUI.apk用RAR压缩程序打开,将编译后生成的文件夹build中的classes.dex和resources.arsc文件拖入原来的SystemUI.apk中,存储方式为存储。然后就可以将新的SystemUI.apk用RE放入手机对应目录中,修改权限后重启后就可以了。


      IP属地:广东3楼2015-02-13 12:07
      回复
        三、CM10全局透明教程
        步骤:
        1、反编译framework-res.apk,用文本编辑器打开res\values\styles.xml,这里说明一下,styles.xml就是主框架下的布局主题文件。
        用Notepad++文本软件打开styles.xml
        2、搜索
        <item name="colorBackground">@color/background_dark</item>
        这里的背景指向是黑色,为了后面引用的透明度,改成
        <item name="colorBackground">@color/transparent</item>
        3、搜索
        <item name="windowShowWallpaper">false</item>
        如果能搜到好几处,就只把第一处改为
        <item name="windowShowWallpaper">true</item>
        这里的窗体就是总的主题项目打开上面定义的透明度 这步骤很重要
        4、接下来就是要在一些常用主题里面引用这个窗体,还是搜索
        <style name="Theme.Black" parent="@style/Theme">
        在这个主题里面把
        <item name="windowBackground">@color/black</item>
        改为
        <item name="windowBackground">@drawable/screen_background_selector_dark</item>
        请注意,这一句是把背景定义交给res/drawable文件夹下的screen_background_selector_dark.xml文件来控制了
        5、打开res/drawable文件夹下的screen_background_selector_dark.xml这个文件,可以看到下面这一行内容:
        <item android:drawable="@drawable/background_holo_dark" />
        这一句就是定义了背景图片,这个图片的位置是res/drawable-nodpi,文件名为background_holo_dark.png
        我们可以对这个图片做任意处理来适应我们的需要,可以处理为全透明也可以半透明。请注意这个图片的高度是充满屏幕的,也就是说是和任务栏是重合的。
        6、分别搜索以下几个主题
        a、<style name="Theme.NoTitleBar" parent="@style/Theme">
        b、<style name="Theme.Black" parent="@style/Theme">
        c、<style name="Theme.Dialog" parent="@style/Theme">
        d、<style name="Theme.Light" parent="@style/Theme">
        e、<style name="Theme.Translucent" parent="@style/Theme">
        f、<style name="Theme.NoDisplay" parent="@style/Theme">
        g、<style name="Theme.Panel" parent="@style/Theme">
        在每一个主题下面加上一行
        <item name="windowShowWallpaper">false</item>
        7、搜索
        <style name="Theme.Holo" parent="@style/Theme">
        往下能找到一行
        <item name="windowShowWallpaper">false</item>
        把这一行改为
        <item name="windowShowWallpaper">true</item>
        8、保存
        9、用Notepad++文本软件打开res\values\drawables.xml
        搜索
        <item type="drawable" name="screen_background_dark">#ff000000</item>
        改为
        <item type="drawable" name="screen_background_dark">#00000000</item>
        这里透明的是通讯录、通话记录等地方的背景
        10、保存。然后就是回编译进行替换,将原来的framework-res.apk用RAR压缩程序打开,将编译后生成的文件夹build中的resources.arsc文件拖入原来的framework-res.apk中,存储方式为存储。把一张与原图片一样规格大小的透明图片命名为background_holo_dark.png拖入原来的framework-res.apk中的res/drawable-nodpi文件夹中,存储方式为存储。然后就可以将新的framework-res.apk用RE放入手机对应目录中,修改权限后重启后就可以了。


        IP属地:广东4楼2015-02-13 12:08
        回复
          离线版http://pan.baidu.com/s/1ntHrxmp


          IP属地:广东5楼2015-02-13 12:10
          回复
            在这里碰到你 821吧的


            IP属地:浙江来自Android客户端6楼2015-03-07 17:50
            回复
              这些 821可以用吗


              IP属地:浙江来自Android客户端7楼2015-03-07 17:51
              收起回复