Android自定义键盘与密码输入框:使用BasicUI库的简单实现

一、前言


BasicUI是一些常用的Android UI组件和一些实用工具类封装,提高Android的开发效率

使用文档链接:github.com/Peakmain/Ba...

How to

  • Step 1. Add the JitPack repository to your build file

Add it in your root build.gradle at the end of repositories:

rust 复制代码
    allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }
  • Step 2. Add the dependency
arduino 复制代码
implementation 'com.github.Peakmain:BasicUI:+'
  • Step 3.some probleam

    如果你的gradle版本比3.5.3高,可能会出现以下几个问题:

    1、Entry name 'AndroidManifest.xml' collided

    解决办法:在gradle.properties添加以下代码

    ini 复制代码
    android.useNewApkCreator=false

    2、如果安装失败,用adb install安装报错提示如下

    failed to install app-debug.apk: Failure INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION: Failed to parse /data/app/vmdl1335956833.tmp/base.apk: Corrupt XML binary file

    解决办法:在添加依赖的build.gradle中添加以下代码

    arduino 复制代码
      android{
           packagingOptions {
            exclude 'AndroidManifest.xml'
         }
       }

二、自定义键盘

效果图

使用

xml 复制代码
        <com.peakmain.ui.widget.password.PasswordEditText
            android:id="@+id/password_edit_text"
            android:layout_width="match_parent"
            android:layout_height="@dimen/dimen_50"
            android:layout_marginLeft="@dimen/dimen_17"
            android:layout_marginRight="@dimen/dimen_17"
            android:layout_marginBottom="@dimen/dimen_16"
            app:bgColor="@color/color_f1f4f6"
            app:bgCorner="@dimen/dimen_4"
            app:layout_constraintBottom_toTopOf="@id/tv_show_password"
            app:passwordColor="@color/black" />

自定义属性说明

属性名 属性类型 描述
ckExtraKey String 是否显示身份证信息,true表示显示
ckDecimalPlaces integer 小数点后几位
ckShowKeyBroad boolean 是否显示小数点

方法说明

方法名 方法返回类型 描述
setOnCustomerKeyboardClickListener void 自定义点击事件,有三个方法实现:①、click(number: String?)点击事件;②、delete():删除事件、③、dissmiss():键盘隐藏事件

示例代码

支付密码键盘
xml 复制代码
        <com.peakmain.ui.widget.password.CustomerKeyboard
            android:id="@+id/custom_key_board"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent" />
身份证键盘
xml 复制代码
        <com.peakmain.ui.widget.password.CustomerKeyboard
            android:id="@+id/custom_key_board"
            android:layout_width="match_parent"
            android:layout_alignParentBottom="true"
            app:ckExtraKey="X"
            android:layout_height="wrap_content" />
小数点键盘
xml 复制代码
        <com.peakmain.ui.widget.password.CustomerKeyboard
            android:id="@+id/custom_key_board"
            android:layout_width="match_parent"
            android:layout_alignParentBottom="true"
            app:ckExtraKey="."
            app:ckDecimalPlaces="3"
            android:layout_height="wrap_content" />

三、自定义密码输入框

效果图

属性说明

属性名 属性类型 描述
passwordNumber integer 密码的个数
passwordRadius dimension 密码圆点的半径
passwordColor color 密码圆点的颜色
divisionLineColor color 分割线的颜色
divisionLineSize dimension 分割线的大小
bgColor color 背景边框的颜色
bgSize dimension 背景边框的大小
bgCorner dimension 背景边框的圆角大小
bgFillColor color 背景的填充颜色

方法说明

方法名 方法返回值类型 描述
addPasswordNumber void 添加密码
deletePassWord void 删除密码
setPasswordCompleteListener void 设置密码输入完成事件
setPasswordVisible void 设置密码是否可见
isPasswordVisible void 判断密码是否可见

示例

  • 布局
xml 复制代码
        <com.peakmain.ui.widget.password.PasswordEditText
            android:id="@+id/password_edit_text"
            android:layout_width="match_parent"
            android:layout_height="@dimen/dimen_50"
            android:layout_marginLeft="@dimen/dimen_17"
            android:layout_marginRight="@dimen/dimen_17"
            android:layout_marginBottom="@dimen/dimen_16"
            app:bgColor="@color/color_f1f4f6"
            app:bgCorner="@dimen/dimen_4"
            app:layout_constraintBottom_toTopOf="@id/tv_show_password"
            app:passwordColor="@color/black" />
  • 设置密码输入完成监听回调事件
kotlin 复制代码
      mEditText!!.setPasswordCompleteListener { text: String -> ToastUtils.showShort(text) }
相关推荐
逐光老顽童2 天前
Java 与 Kotlin 混合开发避坑指南:30 个真实案例实录
android·kotlin
爱勇宝3 天前
鸿蒙生态的下半场:开发者不只要能开发,还要能赚钱
android·前端·程序员
Yeyu3 天前
刷新一帧的艺术:invalidate / postInvalidate / postInvalidateOnAnimation全解析
android
潘潘潘3 天前
Android OTA 升级原理和流程介绍
android
plainGeekDev3 天前
null 判断 → Kotlin 可空类型
android·java·kotlin
plainGeekDev3 天前
getter/setter → Kotlin 属性
android·java·kotlin
YXL1111YXL3 天前
Handler 消息回收与协程异步执行的时序陷阱
android
恋猫de小郭3 天前
KMP / CMP 鸿蒙版本 Beta 发布,他有什么特别之处?
android·前端·flutter
三少爷的鞋3 天前
Android 协程并发控制:别动线程池,控制好并发语义就够了
android
weiggle4 天前
第七篇:状态提升与单向数据流——架构设计的核心
android