添加並客製化Statusbar中圖標顯示順序

1.在android/frameworks/base/core/res/res/values/symbols.xml聲明圖標字符

<java-symbol type="string" name="status_bar_xxx" />

2.在android/frameworks/base/core/res/res/values/config.xml指定顯示順序

<string-array name="config_statusBarIcons">

  <item><xliff:g id="id">@string/status_bar_alarm_clock</xliff:g></item>
  <item><xliff:g id="id">@string/status_bar_rotate</xliff:g></item>

  ...

 + <item><xliff:g id="id">@string/status_bar_xxx</xliff:g></item>

  <item><xliff:g id="id">@string/status_bar_airplane</xliff:g></item>

  <item><xliff:g id="id">@string/status_bar_battery</xliff:g></item>

</string-array>

+ <string translatable="false" name="status_bar_xxx">xxx</string>

字符串config_statusBarIcons中的順序即Statusbar中顯示順序,該顯示順序可通過statusbar加載流程看出。

3.android/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java

在構造函數中

public class StatusBarIconControllerImpl extends StatusBarIconList implements Tunable,
        ConfigurationListener, Dumpable, CommandQueue.Callbacks, StatusBarIconController {

public StatusBarIconControllerImpl(Context context) {
        super(context.getResources().getStringArray(
                com.android.internal.R.array.config_statusBarIcons));

將整個數組值傳遞給StatusBarIconList的構造函數

4.android/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconList.java

public StatusBarIconList(String[] slots) {
        final int N = slots.length;
        for (int i=0; i < N; i++) {
            mSlots.add(new Slot(slots[i], null));
        }
    }

在StatusBarIconList中,會將數組拆分,一個一個按順序添加。因此,只要將config_statusBarIcons順序調整,即可訂製Statusbar中圖標顯示順序。

具體的圖標加載,可以參考

圖標加載流程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章