小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

關(guān)于修改狀態(tài)欄的教程,表達(dá)不好還望海涵

 追夢的赤子 2013-08-25
第一部分,關(guān)于代碼的

我們首先看一下系統(tǒng)原代碼:1,statu_bar.xml

<?xml version="1.0" encoding="utf-8"?>

<com.android.systemui.statusbar.phone.PhoneStatusBarView android:id="@id/status_bar" android:background="@drawable/status_bar_background" android:focusable="true" android:fitsSystemWindows="true" android:descendantFocusability="afterDescendants"

  xmlns:android="
http://schemas./apk/res/android">

    <com.android.systemui.TorchServiceView android:layout_gravity="top|left|center" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:foreground="#ff000000" />

    <com.android.systemui.statusbar.phone.BatteryIndicator android:layout_gravity="top" android:id="@id/battery_indicator" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/battery_indicator" android:scaleType="fitXY" />

    <com.android.systemui.statusbar.phone.BatteryIndicatorCharging android:layout_gravity="top|right|center" android:id="@id/battery_indicator_charging" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/battery_indicator_charging" />

    <ImageView android:id="@id/notification_lights_out" android:paddingLeft="6.0dip" android:paddingBottom="2.0dip" android:visibility="gone" android:layout_width="@dimen/status_bar_icon_size" android:layout_height="fill_parent" android:src="@drawable/ic_sysbar_lights_out_dot_small" android:scaleType="center" />

   1 <LinearLayout android:orientation="horizontal" android:id="@id/icons" android:paddingLeft="6.0dip" android:paddingRight="6.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent">

   1. 1   <LinearLayout android:paddingRight="6.0dip" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_weight="1.0">

            <TextView android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:gravity="left|center" android:id="@id/carrier" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" />

            <LinearLayout android:id="@id/notification_icon_area" android:layout_width="wrap_content" android:layout_height="fill_parent">

                <com.android.systemui.statusbar.StatusBarIconView android:id="@id/moreIcon" android:visibility="gone" android:layout_width="@dimen/status_bar_icon_size" android:layout_height="fill_parent" android:src="@drawable/stat_notify_more" />

                <com.android.systemui.statusbar.phone.IconMerger android:gravity="center_vertical" android:orientation="horizontal" android:id="@id/notificationIcons" android:layout_width="wrap_content" android:layout_height="fill_parent" />

            </LinearLayout>

1.1  </LinearLayout>

        <com.android.systemui.statusbar.NetworkSpeedView android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:gravity="right|center" android:id="@id/network_speed_view" android:visibility="gone" android:layout_width="@dimen/status_bar_network_speed_width" android:layout_height="fill_parent" android:layout_marginRight="4.0dip" />

        <LinearLayout android:gravity="center_vertical" android:orientation="horizontal" android:id="@id/statusIcons" android:layout_width="wrap_content" android:layout_height="fill_parent" />

    1.2    <LinearLayout android:gravity="center" android:orientation="horizontal" android:id="@id/signal_battery_cluster" android:layout_width="wrap_content" android:layout_height="fill_parent">

            <include android:id="@id/signal_cluster" android:layout_width="wrap_content" android:layout_height="wrap_content" layout="@layout/signal_cluster_view" />

            <com.android.systemui.statusbar.phone.BatteryStatusIconView android:id="@id/battery" android:layout_width="wrap_content" android:layout_height="wrap_content" />

    1.2    </LinearLayout>

            <com.android.systemui.statusbar.policy.Clock android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:gravity="left|center" android:id="@id/clock" android:paddingTop="1.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" />

  1 </LinearLayout>


當(dāng)然,這個代碼還沒結(jié)束,只是前面一部分,但是我們只需要關(guān)注前面一部分就可以了。起始行和結(jié)束行,我分別用同樣的顏色標(biāo)注。從顏色標(biāo)注,我們可以看到這段代碼大體框架。

這段代碼就是描述狀態(tài)欄的,1為一個框架,1這個框架里面包含1.1  1.2兩個主要框架以及時間等次要框架。

具體怎么看框架里面的內(nèi)容,我現(xiàn)在開始描述。大家或多或少都懂點英文,但是,如果只懂一點點和我一樣的話,那么很容易被迷惑。每一行代碼具體是描述什么的,要看android:id=""這個單詞的內(nèi)容。于是我們可以容易看出1.1第一句text部分是描述運營商的,橙色區(qū)域是描述通知圖標(biāo)等內(nèi)容。1.2前面那部分是描述網(wǎng)速,網(wǎng)速后面跟著的是鬧鐘藍(lán)牙等圖標(biāo)。1.2是描述信號,以及電池。1.2后面部分是描述時鐘。

這樣,整體布局我們就能看出來了。

至于沒一句里面的代碼,用法,需要注意的,其實我懂得的也不多。我大概知道 gravity=是子組件位置,比如gravity=center意思是居中。gravity= 和 layout gravity=的區(qū)別是前者是內(nèi)容居中,后者是位置相對于父組件居中。具體想了解更多,還是問百度。我只是寫一個簡單教程讓大家理解,方便大家研究,給大家鋪路。我沒有把握完全教會大家。

每個代碼的用法,網(wǎng)上都可以百度的到。

然后我給大家講一下我的思路,也許你有更好的思路。但是我的思路只是供給你參考。是我最新代碼的思路。

要想完美更改,就需要重新布局。之前很多人做過時間居中補丁。但是我看過,那個只是把時間單獨提出來作為一個獨立框架,并行于總框架。居中是沒問題,可能有通知之類的會有重影。按照我的思路居中的話,不會重影。圖標(biāo)多到一定數(shù)量到達(dá)相關(guān)位置會變成省略號。

我的構(gòu)思是重新布局,時間不要提出來,放到正中。這中間就會涉及一個比例問題,如果不做比例的話,就會變成這個樣子:




11.jpg






雖然你代碼寫居中了,但是時間居中不了。所以要做比例。

我的構(gòu)思是,把1.1 和1.2做成相同比例,然后時間放中間。這樣就不會出差錯了。

大家看這一句:

   1. 1   <LinearLayout android:paddingRight="6.0dip" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_weight="1.0">

其中,layout_weight=“1.0”就是表示比例的。數(shù)值越小,優(yōu)先級越大。昨天我做測試的時候,在這里

1.2    <LinearLayout android:gravity="center" android:orientation="horizontal" android:id="@id/signal_battery_cluster" android:layout_width="wrap_content" android:layout_height="fill_parent">

加入了layout_weight="1.0",但是沒用,結(jié)果變成這個樣子:




12.jpg






所以在使用layout_weight=比例的時候,要注意,layout_width="wrap_conten"改成layout_width="0dip"這樣才能保持比例。

相對這些來說,信號居左就簡單多了。我們把1.2里面的id=signal_cluster_view 這部分內(nèi)容提取出來,放到1.1里面,提取的時候注意不要破壞語法結(jié)構(gòu)。這樣,信號就放到左邊了。同時為了保持比例,除了時間放到1.1  1.2中間,其他的 左邊的放到左邊框架里,右邊的放到右邊的框架里。那么布局就完成了。下面我放出我修改后的代碼給大家對比參詳:

<?xml version="1.0" encoding="utf-8"?>

<com.android.systemui.statusbar.phone.PhoneStatusBarView android:id="@id/status_bar" android:background="@drawable/status_bar_background" android:focusable="true" android:fitsSystemWindows="true" android:descendantFocusability="afterDescendants"

  xmlns:android="
http://schemas./apk/res/android">

    <com.android.systemui.TorchServiceView android:layout_gravity="top|left|center" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:foreground="#ff000000" />

    <com.android.systemui.statusbar.phone.BatteryIndicator android:layout_gravity="top" android:id="@id/battery_indicator" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/battery_indicator" android:scaleType="fitXY" />

    <com.android.systemui.statusbar.phone.BatteryIndicatorCharging android:layout_gravity="top|right|center" android:id="@id/battery_indicator_charging" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/battery_indicator_charging" />

    <ImageView android:id="@id/notification_lights_out" android:paddingLeft="6.0dip" android:paddingBottom="2.0dip" android:visibility="gone" android:layout_width="@dimen/status_bar_icon_size" android:layout_height="fill_parent" android:src="@drawable/ic_sysbar_lights_out_dot_small" android:scaleType="center" />

    1<LinearLayout android:orientation="horizontal" android:id="@id/icons" android:paddingLeft="6.0dip" android:paddingRight="6.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent">

        1.1<LinearLayout android:gravity="left" android:paddingRight="6.0dip" android:layout_width="0dip" android:layout_height="fill_parent" android:layout_weight="1.0">

            <LinearLayout android:gravity="left" android:id="@id/signal_battery_cluster" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="fill_parent">

      <include android:id="@id/signal_cluster" android:layout_width="wrap_content" android:layout_height="wrap_content" layout="@layout/signal_cluster_view" />

      </LinearLayout>

            <LinearLayout android:id="@id/notification_icon_area" android:layout_width="wrap_content" android:layout_height="fill_parent">

                <com.android.systemui.statusbar.StatusBarIconView android:id="@id/moreIcon" android:visibility="gone" android:layout_width="@dimen/status_bar_icon_size" android:layout_height="fill_parent" android:src="@drawable/stat_notify_more" />

                <com.android.systemui.statusbar.phone.IconMerger android:gravity="center_vertical" android:orientation="horizontal" android:id="@id/notificationIcons" android:layout_width="wrap_content" android:layout_height="fill_parent" />

            </LinearLayout>

       </LinearLayout>

     1.2 <LinearLayout android:layout_gravity="center" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="fill_parent">

<com.android.systemui.statusbar.policy.Clock android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:gravity="center" android:id="@id/clock" android:paddingTop="1.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" />

       </LinearLayout>

    1.3 <LinearLayout android:gravity="right" android:orientation="horizontal" android:layout_width="0dip" android:layout_height="fill_parent" android:layout_weight="1.0">
        <com.android.systemui.statusbar.NetworkSpeedView android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:gravity="right|center" android:id="@id/network_speed_view" android:visibility="gone" android:layout_width="@dimen/status_bar_network_speed_width" android:layout_height="fill_parent" android:layout_marginRight="4.0dip" />

        <LinearLayout android:gravity="center_vertical" android:orientation="horizontal" android:id="@id/statusIcons" android:layout_width="wrap_content" android:layout_height="fill_parent" />

        <com.android.systemui.statusbar.phone.BatteryStatusIconView android:id="@id/battery" android:layout_width="wrap_content" android:layout_height="wrap_content" />

       </LinearLayout>

    1</LinearLayout>

大家可以看到,我的代碼之中,而是把整個狀態(tài)欄分成三個布局。然后把每個元素嵌入到里面。其實這些東西之所以難,主要一個是結(jié)構(gòu),對于我們這些新手來說,看不懂,看懂了也就好說了。另外一個,就是注意語法。語法是最關(guān)鍵的,但是這里面涉及太多,一個教程寫不完。而我們的目的只是學(xué)會改。最簡單應(yīng)該知道的語法錯誤不要犯的就是,代碼通常 不論以什么開始,結(jié)束時必然要有"/"。 如果沒有,那么語法不完整。一行最后有"/"那么這一行本身就是一句完整代碼。如果沒有“/”,那么我們就要找下一個"/"在哪,找到了,可能一句,可能兩句也可能下一個“/”在好幾個完整語句的后面,所以這個是首先注意不要犯的錯誤。

把結(jié)構(gòu)弄明白了 ,每句代碼大概知道是干什么的,然后把握關(guān)鍵詞,比如gratity=是關(guān)于位置的,比如paddingRight="6.0dip"是距離右邊6個像素的位置等等。這些就問百度。不要讓這些駁雜的東西占據(jù)教程,不然你們也沒耐心看完。

我然后我再說一個就是,大家仔細(xì)看就會注意到,我的代碼里少了一句:

            <TextView android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:gravity="left|center" android:id="@id/carrier" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" />

這一句是描述運營商的,那么為什么少了這一句呢?我的運營商跑哪了?這就涉及到另一個問題。如果放著這一句,那么,信號是居左了,wifi一樣還是在信號左邊,不會跑到運營商旁邊,達(dá)不到我們想要的效果。如果要wifi放到運營商右邊,我們還需要修改signal_cluster_view.xml這個文件。這個文件是關(guān)于信號。我們要想wifi在運營商右邊,就需要把運營商放到信號里面作為一只整體。

具體怎么修改,相信大家如果認(rèn)真仔細(xì)看完并且理解了我前面的內(nèi)容,那么你就知道怎么改了。為了方便大家研究,我把系統(tǒng)源碼和我修改后的代碼做成附件給大家研究。







系統(tǒng)源碼.rar

(1.85 KB, 下載次數(shù): 219)














修改代碼.rar

(1.94 KB, 下載次數(shù): 484)






大家解壓縮兩個文件,修改代碼我沒改文件名,1是修改statu_bar.xml的代碼,2是修改signal_cluster_view.xml的。代碼只是給你們參詳?shù)?,不是讓你們直接拿去使用的,如果直接拿去使用遇到任何BUG ,本作者不負(fù)任何責(zé)任。因為教程我已經(jīng)寫了。另外,我也說了,我寫教程只是鋪路,每個人理解多少,是你們自己的造化。我也是新手。而且這里面涉及內(nèi)容太多,根本無法寫出一篇完整的讓每個人都明白的教程。

你們自己需要做的就是去百度語法,修改位置的時候不要出錯。



代碼做完剩下的就是反編譯了 。



本來反編譯如果不明白的你們應(yīng)該百度 ,畢竟每個人用的軟件不一樣。所以教程也不一樣。但是我怕被人噴,最郁悶的就是我們這些人辛苦研究點東西分享,但是哪里分享的不全面就會被噴。



反編譯我就簡單說幾點注意的,反編譯的時候注意加載framework-res.apk 和framework-miui-res.apk。




1.jpg






回編譯后,反編譯的miuisystemui文件夾里有個dist文件夾,那里面的apk才是回編譯好的。但是回編譯的不能直接使用 ,要把里面修改過的xml文件和recources.arsc替換到?jīng)]有反編譯過的里面。然后用修改過原miuisystemui.apk這個才是補丁




4.jpg






替換用zip打開兩個apk文件,用回編過的拖到未編過的,壓縮方式選擇存儲。



回編失敗檢查是否代碼有問題,如果沒問題,就檢查是否其他問題。這里建議大家修改以前測試一下反編譯不做任何修改能否回編成功。



最后再總結(jié)說一句,我的教程,不能幫助大家完全學(xué)會,只能幫助大家更容易的理解看懂代碼。并且用我成功的案例,帶給你們經(jīng)驗給你們參詳。你們所要做的就是百度語法結(jié)構(gòu),注意修改時不要出錯。畢竟我從完全不會,到學(xué)做主題到現(xiàn)在學(xué)會代碼 ,也全靠論壇,百度更多的還是自己的琢磨。大神們時間精力有限,也只能提供很少的幫助給我。但是我還是研究會了。我能做到的,相信你們也能做到。



最后,發(fā)個廣告。我的新軍迷和低調(diào)上線了,一款收費一款免費,還請大家支持。雖然我當(dāng)時發(fā)布的時候說是米2專用,但是審核組不允許,一再審核失敗,又不斷修改完善。結(jié)果專用主題,其實兼容其他機型。



相信大家學(xué)會并且理解我的教程后,也許很快,你們發(fā)揮你們的想象力,論壇會出現(xiàn)各種各樣的狀態(tài)欄秀了。





    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約