关于状态栏的电量百分比

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的项目上确认可行。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章