Android 开发 Kotlin使用SignatureView实现画布签字
程序员文章站
2022-04-02 22:33:39
Android 开发 Kotlin使用SignatureView实现画布签字1,布局很简单,相对布局嵌套SigmatureView,再加两个确定按钮,重置按钮。pensize:画笔大小backgroundColor:背景颜色penColor:字体颜色这是凑字数的,告辞!
Android 开发 Kotlin使用SignatureView实现画布签字
1,布局很简单,相对布局嵌套SigmatureView,再加两个确定按钮,重置按钮。
- pensize:画笔大小
- backgroundColor:背景颜色
- penColor:字体颜色
- 这是凑字数的,告辞!
<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'
本文地址:https://blog.csdn.net/qq_41273239/article/details/109351995
上一篇: 给男生们的建议
下一篇: 刷脸支付火热 央行担忧安全风险