關於狀態欄的電量百分比

L和M版本上添加顯示電量百分比辦法:
1, 添加view

Status_bar.xml 

<com.android.keyguard.AlphaOptimizedLinearLayout android:id="@+id/system_icon_area"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal"
>

<include layout="@layout/system_icons" />

<TextView android:id="@+id/battery_level"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="@dimen/header_battery_margin_keyguard"
android:paddingEnd="@dimen/battery_level_padding_end"
android:textColor="#ffffff"

android:textSize="@dimen/battery_level_text_size"
android:importantForAccessibility="noHideDescendants"/>
<com.android.systemui.statusbar.policy.Clock
android:id="@+id/clock"
android:textAppearance="@style/TextAppearance.StatusBar.Clock"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:singleLine="true"
android:paddingStart="7dp"
android:gravity="center_vertical|start"
/>
</com.android.keyguard.AlphaOptimizedLinearLayout>
</LinearLayout>



2,修改PhoneStatusBar.java 代碼:
添加代碼:
....................
import java.text.NumberFormat;//導入包
 
.....................

PhoneStatusBar.java


BatteryController mBatteryController;

private TextView mBatteryLevel;//add code 



makeStatusBarView()方法:

.......................
...................
mBatteryController = new BatteryController(mContext);


mBatteryLevel = (TextView) mStatusBarView.findViewById(R.id.battery_level);//add code 


mBatteryController.addStateChangedCallback(new BatteryStateChangeCallback() {
@Override
public void onPowerSaveChanged() {
mHandler.post(mCheckBarModes);
if (mDozeServiceHost != null) {
mDozeServiceHost.firePowerSaveChanged(mBatteryController.isPowerSave());
}
}
@Override
public void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging) {
// noop
//mtk add code
String percentage = NumberFormat.getPercentInstance().format((double) level / 100.0);//add code 
mBatteryLevel.setText(percentage);

}
});
 
 
N版本:
在N版本,做了上述修改之後,有可能出現在淺色應用上仍然顯示白色,導致顯示不清楚。請參考下面的方案進行修改:
 
如果未做設置,那麼僅電池百分比顯示模糊,但是其他類似電池圖標顯示是正常的。是因爲在StatusBarIconController的applyIconTint裏面,對狀態欄上的圖標進行了設置(下面的方案同時將batterylevel添加到這裏):
520 private void applyIconTint() {
521 for (int i = 0; i < mStatusIcons.getChildCount(); i++) {
522 StatusBarIconView v = (StatusBarIconView) mStatusIcons.getChildAt(i);
523 v.setImageTintList(ColorStateList.valueOf(getTint(mTintArea, v, mIconTint)));
524 }
525 mSignalCluster.setIconTint(mIconTint, mDarkIntensity, mTintArea);
526 mBatteryMeterView.setDarkIntensity(
527 isInArea(mTintArea, mBatteryMeterView) ? mDarkIntensity : 0);
528 mClock.setTextColor(getTint(mTintArea, mClock, mIconTint));
//因爲mClock和BatteryLevel都是TextEdit類型的控件,所以請參考mClock.setTextColor來設置電池電量的顏色
//add your code here,mBatteryLevel.setTextColor(getTint(mTintArea, mBatteryLevel, mIconTint))
//mBatteryLevel一定要是BatteryLevel這個EditText的引用,否則會報空指針錯誤
529 }
 
該方案在客戶N的項目上確認可行。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章