如果你也想自學(xué)Android,可以關(guān)注我。我會把踩過的坑分享給你,相關(guān)的教程以及配套的講解 ,分享給大家:
https://edu.51cto.com/lesson/1011461.html
前一陣需要做一個需求,在手機(jī)里的設(shè)置–電池那一頁面加一個電池電量百分比顯示的功能,就是一個switch,開啟的時(shí)候需要百分比顯示,關(guān)閉的時(shí)候就不顯示了,雖然功能不是很大,但是畢竟是自己實(shí)現(xiàn)的,就想做做筆記~
首先得定位,這個得在framework/package/SystemUI下面進(jìn)行修改。
include下面的Textview就是我加的。而這個Textview在代碼中不是寫死的,是用View.VISIBLE和View.GONE來控制的,這得看用戶的選擇。
然后就想著在電池那一頁添加一欄電池電量百分比顯示這么個SwitchPreference,定位代碼到package/app/Settings中有一個類,PowerUsageExts.java,這個類就是控制電池這一頁上的所有功能,在他的構(gòu)造方法里,添加一個SwitchPreference。
然后這個類中有專門SwitchPreference的點(diǎn)擊事件的方法onPowerUsageExtItemsClick,在這個方法中判斷點(diǎn)擊的Key去事件功能
然后在Setting里的修改到此結(jié)束了,跑到SystemUI下面,找到PhoneStatusBar.java類,在這里findViewbyid咱的Textview,
然后有一個監(jiān)聽電池電量的方法,mBatteryController.addStateChangedCallback(new BatteryStateChangeCallback() { 在這里有一個重寫的監(jiān)聽電池電量的方法
public void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging) {
然后就在這個方法中寫好計(jì)算電池電量的兩行代碼
然后在這個類中還有一個廣播接收器private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() { 我們在這里去監(jiān)聽剛剛在Setting里點(diǎn)擊之后發(fā)過來的廣播
好了,這樣就已經(jīng)大功告成了,但是,當(dāng)我打開百分比顯示的時(shí)候,在鎖屏狀態(tài)下,電池電量百分比根本就沒有出來,然后我就想到了一個類,KeyguardStatusBarView.java,不出我所料,在這個類中也有在控制這個電量百分比,之前沒有這個功能的時(shí)候,只有插上充電器的時(shí)候鎖屏界面的狀態(tài)欄上才會出現(xiàn)這個百分比,然后我就在這個類中修改了一點(diǎn),
我就加了兩行,第一行是從上一個類中已經(jīng)存儲好的SharedPreference中讀取已經(jīng)選擇的開啟或者關(guān)閉,然后再去進(jìn)行顯示或者隱藏。我添加的下面幾行就是控制插上充電器之后顯示百分比的地方。
好了,就這樣全部都做好了。
如果你也想自學(xué)Android,可以關(guān)注我。我會把踩過的坑分享給你,相關(guān)的教程以及配套的講解 ,分享給大家:
https://edu.51cto.com/lesson/1011461.html
本文章為轉(zhuǎn)載內(nèi)容,我們尊重原作者對文章享有的著作權(quán)。如有內(nèi)容錯誤或侵權(quán)問題,歡迎原作者聯(lián)系我們進(jìn)行內(nèi)容更正或刪除文章。
相關(guān)文章