Android自定义电池电量显示组件(kotlin,java)

最近产品研发需求需要显示在线设备的电池电量状态,然后UI给出的效果的图是这样的

于是就开始了自定义个,因为是项目特定的UI所以很多属性都没有直接抽取到styles里面了,直接上代码(因为项目是使用kotlin的,所以直接用kotlin进行编程了,当然也附带了Java版本的)

kotlin版本(里面用到的颜色值可自定义,这里是使用项目工具类转过来的):

package com.view

import android.content.Context
import android.graphics.Canvas
import android.graphics.Paint
import android.graphics.RectF
import android.util.AttributeSet
import android.view.View
import com.blankj.utilcode.util.ColorUtils
import com.blankj.utilcode.util.ImageUtils
import com.view.R

/**
 * @CreateDate: 
 * @Author:lp
 * @Description:
 */
class BatteryView @JvmOverloads constructor(context: Context?, attrs: AttributeSet? = null) :
    View(context, attrs) {

    private val batteryBodyPainter: Paint//电池外边框画笔
    private val batteryHeadPainter: Paint//电池盖画笔
    private val mPowerPaint: Paint//电量画笔

    private val outlineRect: RectF//电池矩形
    private val mCapRect: RectF//电池盖矩形
    private val batteryRect: RectF//电量矩形

    private var fullPowerWidth = 0f //满电量时电池体的宽度。
    private var battery = 20
    private var leftPoint = 0f
    private var topPoint = 0f

    fun setBattery(battery: Int) {
        this.battery = battery
        invalidate()
    }

    fun getBattery(): Int {
        return battery
    }

    override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec)
        val specWidthSize = MeasureSpec.getSize(widthMeasureSpec) //宽
        val specHeightSize = MeasureSpec.getSize(heightMeasureSpec) //高

        //设置电池外框
        outlineRect.right = specWidthSize - OUTLINE_THICKNESS - CAP_WIDTH
        outlineRect.bottom = specHeightSize - OUTLINE_THICKNESS

        //设置电池盖矩形
        mCapRect.left = outlineRect.right
        mCapRect.top = specHeightSize.toFloat() / 2 - CAP_HEIGHT / 2
        mCapRect.right = specWidthSize.toFloat()
        mCapRect.bottom = specHeightSize.toFloat() / 2 + CAP_HEIGHT / 2

        //设置电池体
        batteryRect.left = outlineRect.left + GAP_OF_SHAPE_BODY
        batteryRect.top = outlineRect.top + GAP_OF_SHAPE_BODY
        batteryRect.bottom = outlineRect.bottom - GAP_OF_SHAPE_BODY

        //闪电位置
        leftPoint = specWidthSize / 2 - OUTLI
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
截至2021年3月,Android Studio并未提供官方的KotlinJava插件。Kotlin是一种在Android开发中越来越流行的语言,它具有更简洁、安全、易读易写的特性,已经成为很多Android开发者的首选语言。 尽管Android Studio没有官方的KotlinJava插件,但开发者仍然可以手动将Kotlin代码转换为Java代码。虽然这种手动转换可能会比较耗时,但可以通过以下步骤完成: 1. 在Android Studio中,选择要转换为JavaKotlin代码文件。 2. 使用键盘快捷键Ctrl + Shift + Alt + K (Windows)或Cmd + Shift + Option + K (Mac)打开“转换为Java”对话框。 3. 在弹出的对话框中,选择要将Kotlin转换为Java的代码范围:整个文件、选定行或选定块。 4. 点击“确定”按钮,Android Studio将会自动将所选部分的Kotlin代码转换为Java代码。 需要注意的是,手动转换Kotlin代码为Java代码时可能会遇到一些问题。由于Kotlin具有一些Java所不支持的特性,这种转换可能会导致生成的Java代码复杂、冗长或不完美。因此,在转换代码之前,建议开发者先考虑是否真的需要将Kotlin代码转换为Java代码,以便充分利用Kotlin语言的优势。 总结起来,虽然Android Studio没有官方的KotlinJava插件,但开发者仍然可以通过手动转换的方式将Kotlin代码转换为Java代码。但需注意转换过程可能会带来一些问题,因此,开发者在决定是否转换代码前需要仔细考虑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值