Android实现生成二维码并保存到相册

 更新时间:2022年04月13日 08:16:07   作者:bfw2015  
这篇文章主要介绍了如何利用Android实现二维码的生成,并且保存到本地相册。文中的示例代码讲解详细,感兴趣的小伙伴快跟随小编学习一下

效果图如下

保存的图片效果是:

保存到本地的,是整个视图,不只是单单的二维码的图片,

在了解的一番过程之后,我知道了,

1.首先要去获取保存图片的写入权限;(使用 https://github.com/getActivity/XXPermissions

2. 保存指定view的bitmap (这一步,)

3.保存到相册

直接上代码:

private val mBitmapUrl = "wwwww://WL3687211525992373----"

private lateinit var mBitmap: Bitmap

使用的使用的是 https://github.com/bingoogolapple/BGAQRCode-Android  这个里面的类 去生成二维码内容

同时,这个地方,是耗时操作,就使用了一下kotli的协程处理耗时操作了

lifecycleScope.launch {
val qrcodeBitmap = QRCodeEncoder.syncEncodeQRCode(mBitmapUrl, SizeUtils.dp2px(200f))
mBitmap = qrcodeBitmap
mDatabind.imageViewScanPay.load(qrcodeBitmap)
}

3. 点击下载指定视图内容view到图库

mDatabind.textViewDownloadPicture.setOnClickListener {
//先判断存储权限是否授权
if (!XXPermissions.isGranted(
this@RechargeQrCodeActivity,
            Manifest.permission.WRITE_EXTERNAL_STORAGE
)
    ) {
XXPermissions.with(this@RechargeQrCodeActivity)
.permission(Permission.WRITE_EXTERNAL_STORAGE)
.request { permissions, all ->
if (all) {
// 保存图片
saveViewToImg(mDatabind.viewTop,this@RechargeQrCodeActivity)
} else {
ToastUtils.showShort("保存权限获取失败!")
}
}

} else {
// 保存图片
saveViewToImg(mDatabind.viewTop,this@RechargeQrCodeActivity)
}

}
/**
 * 把view保存成图片
*/

private fun  saveViewToImg(mView:View,mContext:Context){
// 获取图片的某布局
mView.isDrawingCacheEnabled = true
mView.buildDrawingCache()
lifecycleScope.launch {
// 获取图片
val drawingCache = mView.drawingCache
saveImg(drawingCache)
// 保存事后释放资源
mView.isDrawingCacheEnabled = false
mView.destroyDrawingCache()
}


}
/**
 * 保存图片到本地
*/
private fun saveImg(bitmap: Bitmap) {
val fileName = "qr_" + System.currentTimeMillis() + ".png"
val save2Album = ImageUtils.save2Album(bitmap, fileName, Bitmap.CompressFormat.PNG, false)
if (save2Album != null) {
ToastUtils.showShort("保存成功")
} else {
ToastUtils.showShort("保存失败")
}
}

在保存图片这里,这里用到了一个库: implementation 'com.blankj:utilcodex:1.31.0'   ImageUtls.sava2Album 进行图片的保存;

特别注意:在保存整个白色视图view,做完图片进行保存的时候,我原来的视图是直接用约束布局进行写的,视图都是平级关系;

这样就会导致,视图,只是保存了白色的view背景色视图,view上面的内容都是没有了,

后来,通过探索,知道了,这个地方是使用包裹内容的视图的,所以就在里面首先用了一层cardView , 再到里面用了一层,线性布局,这样就是有层级关系了,

视图就正常显示; 

原先错误的视图:--- 也不能说是错误,只是不适合,这里的

后面修改后的视图关系

完成整个流程;

参考文章

以上就是Android实现生成二维码并保存到相册的详细内容,更多关于Android生成二维码的资料请关注脚本之家其它相关文章!

相关文章

  • 利用Android封装一个有趣的Loading组件

    利用Android封装一个有趣的Loading组件

    这篇文章我们将利用Android封装一个可以自定义配置前景色和背景色的Loading组件,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-08-08
  • Android 如何在私有空间创建文件

    Android 如何在私有空间创建文件

    在Android应用程序中,我们经常需要在私有空间中创建文件来存储应用数据,例如用户配置文件、日志文件等,本文将介绍如何在Android应用中使用Java代码创建文件并将其保存在私有空间中,感兴趣的朋友跟随小编一起看看吧
    2024-06-06
  • Android应用程序模型之应用程序,任务,进程,线程分析

    Android应用程序模型之应用程序,任务,进程,线程分析

    这篇文章主要介绍了Android应用程序模型之应用程序,任务,进程,线程分析,较为详细的分析了Android应用程序模型中关于任务、进程、线程的相关概念及注意事项,需要的朋友可以参考下
    2016-01-01
  • Android 操作系统获取Root权限 原理详细解析

    Android 操作系统获取Root权限 原理详细解析

    许多机友新购来的Android机器没有破解过Root权限,无法使用一些需要高权限的软件,以及进行一些高权限的操作,其实破解手机Root权限是比较简单及安全的,破解Root权限的原理就是在手机的/system/bin/或/system/xbin/目录下放置一个可执行文件“su”
    2013-10-10
  • Android中DialogFragment自定义背景与宽高的方法

    Android中DialogFragment自定义背景与宽高的方法

    DialogFragment 弹出框默认是在屏幕的中央,左右还有留白,那么如何自定义背景和宽高呢?下面这篇文章就来给大家介绍了关于Android中DialogFragment自定义背景与宽高的方法,需要的朋友可以参考下。
    2017-08-08
  • Android实现折线图小工具

    Android实现折线图小工具

    这篇文章主要为大家详细介绍了Android实现折线图小工具,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09
  • Android在view.requestFocus(0)返回false的解决办法

    Android在view.requestFocus(0)返回false的解决办法

    这篇文章主要介绍了Android在view.requestFocus(0)返回false的解决办法,非常不错,具有参考借鉴价值,需要的朋友参考下
    2016-08-08
  • Android自定义View实现多边形统计图示例代码

    Android自定义View实现多边形统计图示例代码

    这篇文章主要给大家介绍了关于Android自定义View如何实现多边形统计图的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-01-01
  • Flutter禁止手机横屏的简单实现方法

    Flutter禁止手机横屏的简单实现方法

    app默认是可以横屏的,如果需要禁止横屏话可以参考这篇文章,本文主要给大家介绍了关于Flutter禁止手机横屏的简单实现方法,需要的朋友可以参考下
    2021-07-07
  • Android使用WindowManager构造悬浮view

    Android使用WindowManager构造悬浮view

    这篇文章主要为大家详细介绍了Android使用WindowManager构造悬浮view的具体方法,感兴趣的小伙伴们可以参考一下
    2016-05-05

最新评论