上一篇搞定了服务的启停与保活,即完成了这个Easy Call的核心功能之一,把服务起起来,我们开屏后就能看到自己定义的内容了。
接下来我们看看自定义锁屏页面内容里的第一个点:电源组件的定义
先看效果图:
实现步骤:
1、自定义一个View,继承android提供的View;
2、重写onDraw方法;
3、在onDraw方法里画三个矩形,第一个矩形是最大的矩形,为空心矩形,代表电池体,第二个矩形是实心矩形,代表电池头,第三个矩形是实心矩形,代表点亮。
4、获取当前系统电量,根据电量的多少决定画笔的颜色,及电池应该用什么颜色显示,比如电量低于20%时使用红色,大于50%时使用绿色。
贴上核心代码:
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
drawBattery(canvas);
}
void drawBattery(Canvas canvas){
Paint paint = new Paint();
// 空心
paint.setStyle(Paint.Style.STROKE);
float sWidth = width/20.f;//左右边框
float sWidth2 = sWidth/2;//上下边框
paint.setStrokeWidth(sWidth);
// 绘制矩形框
RectF rect = new RectF(sWidth2,sWidth2,width-sWidth-sWidth2,height-sWidth2);
paint.setColor(color);
canvas.drawRect(rect,paint);
// 绘制电量
float offset = (width-sWidth*2)*percent/100.f;
RectF rectPower = new RectF(sWidth,sWidth,offset,height-sWidth);
if(percent <= 20){
paint.setColor(Color.RED);
} else if(percent > 20 && percent <=50){
paint.setColor(context.getResources().getColor(R.color.header_bg6));
} else {
paint.setColor(color);
}
paint.setStrokeWidth(0);
//实心
paint.setStyle(Paint.Style.FILL);
canvas.drawRect(rectPower,paint);
// 电池头部
RectF rectHead = new RectF(width-sWidth,height*0.25f,width,height*0.75f);
paint.setColor(color);
canvas.drawRect(rectHead,paint);
}
获取系统电量的代码:
// 适用于5.0以上
BatteryManager manager = (BatteryManager) getSystemService(BATTERY_SERVICE);
int percent = manager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);
实现在APP上的效果如下:
这个APP的目标用户是老年人,不太看的动图标或者电量,当电量低于20%时直接红字警示“建议充电”。
完整代码地址:https://github.com/luoxizhong/LockScreen-ElderlyScreen