Android 开发 Kotlin使用SignatureView实现画布签字

Android 开发 Kotlin使用SignatureView实现画布签字

1,布局很简单,相对布局嵌套SigmatureView,再加两个确定按钮,重置按钮。

  1. pensize:画笔大小
  2. backgroundColor:背景颜色
  3. penColor:字体颜色
  4. 这是凑字数的,告辞!
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:sign="http://schemas.android.com/apk/res-auto"
                android:orientation="vertical"
                android:layout_width="match_parent"
                android:layout_height="match_parent">
  <Button
            android:id="@+id/btn_Reset"
            android:layout_width="match_parent"
            android:layout_height="@dimen/dp50"
            android:layout_alignParentBottom="true"
            android:background="@drawable/button_selector"
            android:text="@string/bt_save"
            android:textColor="@color/white"/>
    <com.kyanogen.signatureview.SignatureView
            android:id="@+id/signature_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/header"
            android:layout_marginBottom="@dimen/dp50"
            sign:penSize="5dp"
            sign:backgroundColor="#ffffff"
            sign:penColor="#000000"
            sign:enableSignature="true"/>
    <Button
            android:id="@+id/btn_confirm"
            android:layout_width="match_parent"
            android:layout_height="@dimen/dp50"
            android:layout_alignParentBottom="true"
            android:background="@drawable/button_selector"
            android:text="@string/bt_save"
            android:textColor="@color/white"/>
</RelativeLayout>

2,添加控件监听,处理响应时间,设置签字图片存储路径,然后一些图片的操作都写了注释。

override fun initData{ 
    btn_Reset.setOnClickListener{
       signature_view.clearCanvas()//清空画布
    }
    btn_confirm.setOnClickener{
     val bitmap = signature_view.signatureBitmap//获取画布签字结果
     saveFile(bitmap, "signature.png")
    }
}
 private fun getSDPath(): String {
        val sdCardExist: Boolean =
            Environment.getExternalStorageState() == Environment.MEDIA_MOUNTED // 判断sd卡是否存在
        if (sdCardExist) {
            sdDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES)!!// 获取跟目录
        }
        return sdDir.absolutePath
    }
private fun saveFile(bm: Bitmap, fileName: String) {
        try {
            val path = getSDPath().plus("/test/")//设置存储路径
            val dirFile = File(path)
            if (!dirFile.exists()) {
                dirFile.mkdir()
            }
            val myCaptureFile = File(path + fileName)
            val bos: BufferedOutputStream
            bos = BufferedOutputStream(FileOutputStream(myCaptureFile))//字节缓冲输出流
            bm.compress(Bitmap.CompressFormat.PNG, 100, bos)
            bos.flush()
            bos.close()
        } catch (e: IOException) {
            e.printStackTrace()
        }
    }

3,签字图片都存下来了那不是想干啥就干啥,直接嘿嘿嘿…
在这里插入图片描述

//我就要显示出来,谁说话也不好使
 var filelist = arrayListOf<File>()
 Luban.with(App.instance).load(images).ignoreBy(100)//luban图片压缩
            .setTargetDir(context.cacheDir.absolutePath)
            .setCompressListener(object : OnCompressListener {
                override fun onSuccess(file: File) {//压缩成功
                    filelist.add(file)//压缩完的结果存一下
                    if (filelist.size == images.size) {
                        putImage(filelist)//后台的大哥们也要看看潇洒的签名就传给他们瞅瞅
                    }
                }
                override fun onError(e: Throwable?) {
                    Toask.short("哦吼,出错了!")
                }
                override fun onStart() {
                }
            }).launch()
Glide.with(this).load(filelist .get(0).getAbsolutePath()).into(fontImg)//图片显示到控件,fontImg是我的控件名

4,打完收工,好像忘了点啥。
在这里插入图片描述

//权限
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
 //包引入
implementation 'com.kyanogen.signatureview:signature-view:1.2'
implementation 'top.zibin:Luban:1.1.8'
implementation 'com.github.bumptech.glide:glide:4.9.0'
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旧人颜Q

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值