狀態列快捷按鈕實現原理
採用java工廠類模式來實現
所有按鈕均繼承QuickButton.java來實現
該類提供的介面有:
一:protected abstract void toggleState();
用途:每個按鈕的點擊事件處理,寫在mClickListener 裡面。
二:protected abstract boolean handleLongClick()
狀態列左右滑動原理
QuickSettingsView.java繼承 FrameLayout為使用者自訂控制項,用於收集所有已實現QuickButton,
1,實現方式概述:
步驟一:先將所有已實現的QuickButton
放到LinearLayout裡面
步驟二:每屏顯示5個QuickButton如果個數大於5個,回將LinearLayout放到
HorizontalScrollView裡面已實現其左右滑動效果,
2,重點代碼示範:
3,自訂button和宏的控制:
4,注意事項:
<1>由於不同手機解析度不同,因此每個button的寬度須動態擷取
實現方法:
mContext.getResources().getDisplayMetrics().widthPixels / QUICK_PANEL_BUTTON_CONUT
<2> HorizontalScrollView預設會有白色ScrollBar看起來影響美觀,因此要去掉。
實現方法為:
mScrollView.setHorizontalScrollBarEnabled(false);
<3>由於所有的action都放在QuickSettingsView.java做統一處理,因此收到action僅對註冊的改action的button進行處理
通知欄背景和字型顏色
修改的檔案目錄:main/frameworks/base/core/res/res/values/styles.xml
內容字型:
<style name="TextAppearance.StatusBar.EventContent">
<item name="android:textColor">#ffB6CAD6</item>
</style>
修改標題字型:
<style name="TextAppearance.StatusBar.EventContent.Title">
<item name="android:textSize">16sp</item>
<item name="android:textStyle">bold</item>
<item name="android:textColor">#ffffffff</item>
</style>
通知欄Item背景的修改:
修改檔案:main/frameworks/base/packages/SystemUI/res/layout/status_bar_latest_event.xml
修改內容:
<com.android.systemui.statusbar.LatestItemView
……….
android:background="@drawable/status_bar_item_background_style“
……….>
</com.android.systemui.statusbar.LatestItemView>
動畫配置參數在目錄:
main/frameworks/base/packages/SystemUI/res/anim
檔案cycle_7.xml中定義左右抖動次數:
<cycleInterpolator xmlns:android=http://schemas.android.com/apk/res/android android:cycles="1" />
編譯步驟如下:
第一:在main/frameworks/base/packages/SystemUI下運行:mm
第二:將apk取出,將其push到system/app下,
第三:執行adb reboot