Android 11 状态栏电池图标的定制

本文介绍了在Android 11中如何定制状态栏电池图标,特别是在无线充电时如何在电池图标两侧添加无线电波图标。首先,通过分析电池图标的显示流程,了解如何设置和绘制图标。然后,通过判断是否为无线充电状态,利用BroadcastReceiver获取相关信息并在BatteryMeterView中添加电波图片。最后,讨论了如何根据充电状态改变电池图标的颜色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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设置了是否充电的属性,以及电池电量的属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值