kotlin 自定义数字键盘按键逻辑

271 阅读1分钟
var money:Double = 0.0
var pointAfter = false   //判断是否要开始输入小数
var pointAfterFirstEnter = true    //小数点后第一位确定
val onclick: (String) -> Unit = { it ->   //该lambda绑定在数字键和点键上
    var integer = ""
    var float = ""
    money.toString().split(".").run {
        integer = this[0]
        float = this[1]
    }
    when (it) {
        "1", "2", "3", "4", "5", "6", "7", "8", "9", "0" -> {
            if (pointAfter) {
                if (float == "0" && pointAfterFirstEnter) {
                    float = it
                    pointAfterFirstEnter = false
                } else {
                    if (float.length < 2) {
                        float += it
                    }
                }
            } else {
                if (integer == "0") {
                    integer = it
                } else {
                    integer += it
                }
            }
        }
        "." -> {
            pointAfter = true
        }
    }
    money = "$integer.$float".toDouble()
}
val delete: () -> Unit = {   //该lambda绑定在删除键上
    var integer = 0
    var float = 0
    money.toString().split(".").run {
        integer = this[0].toInt()
        float = this[1].toInt()
    }
    if (pointAfter) {
        float /= 10
        if (float == 0) {
            pointAfter = false
            pointAfterFirstEnter = true
        }
    }else {
        integer /= 10
    }
    money = "$integer.$float".toDouble()
}

2022-02-28-17-55-29.gif