一站式开发一个安卓APP-开发篇(3、自定义电源组件)

上一篇搞定了服务的启停与保活,即完成了这个Easy Call的核心功能之一,把服务起起来,我们开屏后就能看到自己定义的内容了。

接下来我们看看自定义锁屏页面内容里的第一个点:电源组件的定义

先看效果图:

battery

实现步骤:
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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值