1. 状态栏电池图标的显示流程
//packages/SystemUI/src/com/android/systemui/BatteryMeterView.java
public BatteryMeterView(Context context, AttributeSet attrs, int defStyle) {
mBatteryIconView = new ImageView(context);
mBatteryIconView.setImageDrawable(mDrawable);
final MarginLayoutParams mlp = new MarginLayoutParams(
getResources().getDimensionPixelSize(R.dimen.status_bar_battery_icon_width),
getResources().getDimensionPixelSize(R.dimen.status_bar_battery_icon_height));
mlp.setMargins(0, 0, 0,
getResources().getDimensionPixelOffset(R.dimen.battery_margin_bottom));
addView(mBatteryIconView, mlp);
}
在batteryMeterView的构造方法中,new 了 一个ImageView,该VIew就是电池图标的View
通过setImageDrawable设置图片为mDrawable, mDrawable是通过代码绘制而成的,我们的场景则是在无线充电时在电池图标两侧添加 无线电波图标
保持电池图标原有的不变,在无线充电时添加电波图标
public void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging) {
mDrawable.setCharging(pluggedIn);
mDrawable.setBatteryLevel(level);
mCharging = pluggedIn;
mLevel = level;
updatePercentText();
}
在接收到电池改变广播时,该方法会被调用,在该方法中可以看到 给mDrawable设置了是否充电的属性,以及电池电量的属性