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