frameworks/base/packages/SystemUI/res/layout/status_bar.xml是状态栏icon的资源文件,首先在这里添加Battery percent View
……
<include layout="@layout/system_icons" />
<!--@go-->
<TextView android:id="@+id/battery_precent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="@dimen/header_battery_margin_expanded"
android:textColor="#ffffff"
android:textSize="@dimen/battery_level_text_size"
android:importantForAccessibility="noHideDescendants"/>
<!--@die-->
<com.android.systemui.statusbar.policy.Clock
……
然后在frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java的makeStatusBarView方法中进行对View的控制。
……
/**
*@go
*/
mBatteryPercent = (TextView) mStatusBarView.findViewById(R.id.battery_precent);
mBatteryPercent.setVisibility((Settings.System.getInt(
context.getContentResolver(),
"battery_percentage", 0) != 0) ? View.VISIBLE : View.GONE);
/**
*@die
*/
……
这里需要监听电池电量的变化,这个类已经有一个方法,所以只需要获取电量转换百分比并赋到TextView中显示
@Override
public void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging) {
//**
String percentage = NumberFormat.getPercentInstance().format((double) level / 100.0);
mBatteryPercent.setText(percentage);
// noop
}