millettheme吧 关注:708贴子:3,493

【教程贴】下拉通知栏开关布局自定义

只看楼主收藏回复

这是我之前在MIUI论坛发过的一个教程,看吧里没有这方面的,就搬过来了。
桌面镇楼


来自Android客户端1楼2015-12-13 17:24回复
    今天呢,给大家带来怎么样自定义下拉通知栏开关布局与时间如何添加如何添加AMPM。
    首先上一张官方默认下拉通知栏布局。


    来自Android客户端2楼2015-12-13 17:24
    回复
      如上图所示,官方默认的下拉布局是3×3的,看起来空空荡荡的,不仅不美观还浪费空间。那么我们怎样才可以让下拉通知栏看起来更美观的同时又合理的把这些浪费的空间巧妙的应用呢?别急,下面开始我们今天的教程。


      来自Android客户端3楼2015-12-13 17:25
      回复
        第一,你需要两个文件,一个UI模块(貌似这文件是这么叫的吧?)com.android.systemui与一个全局模块framework-miui-res。下载下面我给出的链接内附件解压即可立即拥有这两个高比格的模块。
        链接:http://pan.baidu.com/share/link?shareid=1779337002&uk=897974198


        来自Android客户端4楼2015-12-13 17:26
        回复
          解压完成之后将两个模块重命名,加上zip后缀,即com.android.systemui.zip与framework-miui-res.zip


          来自Android客户端5楼2015-12-13 17:26
          回复
            然后我们先将systemui文件解压,解压之后会有如下图所示的一个命名为res的文件夹与theme_values.xml代码文件


            来自Android客户端6楼2015-12-13 17:26
            回复
              然后我们会发现出现几行看不懂的鸟文,如下图所示。


              来自Android客户端8楼2015-12-13 17:27
              回复
                第一行代码控制的是竖屏下拉通知栏开关的宽度
                <dimen name="expanded_status_bar_toggle_max_width">70.0dip</dimen>
                第二行代码控制的是横屏下拉通知栏开关的高度
                <dimen name="expanded_status_bar_toggle_max_land_height">78.0dip</dimen>
                第三行代码控制的是竖屏下拉通知栏开关的高度
                <dimen name="expanded_status_bar_toggle_max_height">75.0dip</dimen>
                我们只要改变竖屏下拉通知栏开关的高宽度就可以实现4×4或者4×3等等,因为开关的高宽度如果变小了,相对应的就改变就开关图标的大小,而改变了开关图标的大小之后就能缩小开关图标所占用的空间,开关图标占用的空间变小了,自然的一页就能放下更多的图标,也就达到了下拉通知栏X×X的布局。(我说的是不是太饶了…)


                来自Android客户端9楼2015-12-13 17:28
                回复
                  只要修改代码中的数值就能达到改变下拉开关图标高宽度的效果。比如修改宽度,就是修改<dimen name="expanded_status_bar_toggle_max_width">70.0dip</dimen>这条代码中间的数值70就可以了(数值大小由你决定,直到你满意为止)。
                  修改完成数值之后将res文件夹与theme_values.xml代码文件重新打包成zip并重命名为com.android.systemui即可(注意,无后缀)。
                  我给出的com.android.systemui附件自带数值就是基本通用的3×4布局,为什么说3×4而不是4×4呢?因为单单改变这一个模块是无法实现4×4或者X×X的,只能是3×X。


                  来自Android客户端10楼2015-12-13 17:28
                  回复
                    这时我们就需要另外一个文件framework-miui-res,没错就是这个文件,它就是决定下拉通知栏开关横排数量的重要角色!
                    这时我们就需要另外一个文件framework-miui-res,没错就是这个文件,它就是决定下拉通知栏开关横排数量的重要角色!
                    这时我们就需要另外一个文件framework-miui-res,没错就是这个文件,它就是决定下拉通知栏开关横排数量的重要角色!
                    重要的事情要讲三遍甚至更多遍…
                    我们给它加上zip后缀并解压该文件,得到以下两样上古神器 — 命名为framework-miui的文件夹与filters.xml文件。


                    来自Android客户端11楼2015-12-13 17:29
                    回复
                      我们进入framework-miui文件夹,会发现下面也有一个theme_values.xml代码文件。我们还是用re以编辑模式打开它。


                      来自Android客户端12楼2015-12-13 17:29
                      回复
                        打开之后里面有如下图所示的代码。
                        第一行代码控制的是竖屏下拉通知栏开关横排数量
                        <integer name="expanded_status_bar_toggles_column">4</integer>
                        第二行代码控制的是横屏下拉通知栏开关横排数量
                        <integer name="expanded_status_bar_toggles_land_column">6</integer>
                        我们只需要将代码中间的数字改为自己需要的横排数量即可,例如你想改成变态的6×X布局,修改如下面代码即可。
                        <integer name="expanded_status_bar_toggles_column">6</integer>
                        修改完成以后打包成zip并且重命名为framework-miui-res即可(注意,无后缀)。


                        来自Android客户端13楼2015-12-13 17:30
                        回复
                          修改完成之后的模块可以放入打包成mtz或者放入主题包使用。也可以移动到system/media/theme/default下,然后重新应用一次状态栏主题即可立马解锁隐藏布局。


                          来自Android客户端14楼2015-12-13 17:31
                          回复
                            接下来讲讲怎么让状态栏时间上午下午显示为AMPM,需要的同学请别急着打包framework-miui-res文件。我们还需要把framework-miui文件夹下的XML代码文件复制出来一份,然后将里面的两行代码删除,并加入以下代码:
                            <string-array name="detailed_am_pms">
                            <item>AM </item>
                            <item>AM </item>
                            <item>AM </item>
                            <item>PM </item>
                            <item>PM </item>
                            <item>PM </item>
                            <item>PM </item>
                            </string-array>
                            <string-array name="detailed_am_pms" />
                            代码添加位置如下图所示。


                            来自Android客户端15楼2015-12-13 17:31
                            收起回复
                              如果你的手机修改了DPI,那么亮度条与设置图标会错位,下面会很!空!旷!如下图所示


                              来自Android客户端17楼2015-12-13 17:32
                              回复