import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
+import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.View;
public class BatteryView extends View {
+ private final Rect mSrcRect;
+ private final Rect mDestRect;
private int width;
private int height;
private int mCurrentLevel;
private int picWidth;
private int picHeight;
private BitmapFactory.Options options;
- private Bitmap chargingPic;
private BatteryMode mCurrentMode = BatteryMode.NORMAL;
+ private int targetHeight;
+ private int targetWidth;
public BatteryView(Context context) {
this(context, null);
R.mipmap.battery_level_save_100, options);
picWidth = bitmap.getWidth();
picHeight = bitmap.getHeight();
+ targetWidth = picWidth - 10;
+ targetHeight = picHeight - 8;
+ mSrcRect = new Rect(0, 0, picWidth, picHeight);
+ mDestRect = new Rect(0, 0, targetWidth, targetHeight);
//加载静态图片列表
initResource();
- chargingPic = BitmapFactory.decodeResource(getResources(), R.mipmap.charge_state, options);
}
//充电状态图标变化
- private final int[] chargeBatteryRes = new int[6];
+ private final int[] chargeBatteryRes = new int[7];
//普通状态图标
private final int[] normalBatteryRes = new int[7];
//省电模式图标
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- ICLogger.d("picWidth == > " + picWidth + " picHeight == > " + picHeight);
- setMeasuredDimension(picWidth, picHeight);
+ ICLogger.d("picWidth == > " + targetWidth + " picHeight == > " + targetHeight);
+ setMeasuredDimension(targetWidth, targetHeight);
}
private int currentDrawPic = -1;
ICLogger.d("current index == > " + index);
//判断是不是省电模式
if (mCurrentMode == BatteryMode.NORMAL) {
- currentDrawPic = normalBatteryRes[index];
+ //是否要绘制充电中的图标
+ if (isCharging) {
+ currentDrawPic = chargeBatteryRes[index];
+ } else {
+ currentDrawPic = normalBatteryRes[index];
+ }
} else {
currentDrawPic = saveModeBatteryRes[index];
}
//绘制内容
//电量图标
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), currentDrawPic, options);
- canvas.drawBitmap(bitmap, 0, 0, paint);
- //是否要绘制充电中的图标
- if (isCharging) {
- int left = width / 2 - chargingPic.getWidth() / 2;
- canvas.drawBitmap(chargingPic, left, 0, paint);
- }
+ canvas.drawBitmap(bitmap, mSrcRect, mDestRect, paint);
}
private int loopIndex = 0;
private void initResource() {
//充电变化的图标
chargeBatteryRes[0] = R.mipmap.battery_chage_0;
- chargeBatteryRes[1] = R.mipmap.battery_level_20;
- chargeBatteryRes[2] = R.mipmap.battery_level_40;
- chargeBatteryRes[3] = R.mipmap.battery_level_60;
- chargeBatteryRes[4] = R.mipmap.battery_level_80;
- chargeBatteryRes[5] = R.mipmap.battery_level_100;
+ chargeBatteryRes[1] = R.mipmap.battery_chage_0;
+ chargeBatteryRes[2] = R.mipmap.battery_level_20;
+ chargeBatteryRes[3] = R.mipmap.battery_level_40;
+ chargeBatteryRes[4] = R.mipmap.battery_level_60;
+ chargeBatteryRes[5] = R.mipmap.battery_level_80;
+ chargeBatteryRes[6] = R.mipmap.battery_level_100;
//普通状态图标
normalBatteryRes[0] = R.mipmap.battery_level_0;
normalBatteryRes[1] = R.mipmap.battery_level_10;
normalBatteryRes[2] = R.mipmap.battery_level_save_20;
- normalBatteryRes[3] = R.mipmap.battery_level_40;
- normalBatteryRes[4] = R.mipmap.battery_level_60;
- normalBatteryRes[5] = R.mipmap.battery_level_80;
- normalBatteryRes[6] = R.mipmap.battery_level_100;
- //省电模式状态图标
+ normalBatteryRes[3] = R.mipmap.battery_level_save_40;
+ normalBatteryRes[4] = R.mipmap.battery_level_save_60;
+ normalBatteryRes[5] = R.mipmap.battery_level_save_80;
+ normalBatteryRes[6] = R.mipmap.battery_level_save_100;
+ //省电模式状态图标,S123并没有提供省电模式的图
saveModeBatteryRes[0] = R.mipmap.battery_level_0;
saveModeBatteryRes[1] = R.mipmap.battery_level_10;
saveModeBatteryRes[2] = R.mipmap.battery_level_save_20;