监控电池变化比较简单,但是充电时候要电量从当前电量增长到满状态,然后一直重复,后来发现将对应的ImageView的background指定到animation即可
1.需要多张电量图片
电量状态1
电量状态2
电量状态3
电量状态4
电量状态5
电量状态6
2.然后生成多个animation文件,分别是从状态1到状态6,状态2到状态6.。。。。。
如:animation_battery_1.xml
如:animation_battery_2.xml
3.在代码里面通过设置ivBattery.setBackgroundResource(batteryAnimation),其中batteryAnimation为animation文件
public class BatteryActivity extends Activity {
ImageView ivBattery;//电池电量
ImageView ivBatteryCharging;//充电中
TextView tvStatus;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.battery_charging);
ivBattery = (ImageView)findViewById(R.id.iv_battry);
ivBatteryCharging = (ImageView)findViewById(R.id.iv_battry_charging);
tvStatus = (TextView)findViewById(R.id.tv_statues);
registerReceiver(batteryReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(batteryReceiver);
}
private BroadcastReceiver batteryReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED)){
int level = intent.getIntExtra("level", 0);
int scale = intent.getIntExtra("scale", 100);
int status = intent.getIntExtra("status", BatteryManager.BATTERY_STATUS_NOT_CHARGING);
notifyBattery(level,scale,status);
}
}
};
public void notifyBattery(int level,int scale,int status){
int per = scale/6;
int batteryPic;//电量图片
int batteryAnimation;//电量动态增长
if(level
4.记得在manifest中添加权限
5.充电的时候界面显示,其中图片是动态的
6.没有充电时候显示
7。其他图片
电池背景图片
充电的时候显示闪电