当前位置: 首页 > news >正文

Android之图片保存相册及分享图片

文章目录

  • 前言
  • 一、效果图
  • 二、实现步骤
    • 1.引入依赖库
    • 2.二维码生成
    • 3.布局转图片保存或者分享
  • 总结


前言

其实现在很多分享都是我们自定义的,更多的是在界面加了很多东西,然后把整个界面转成图片保存相册和分享,而且现在分享都不需要第三方,直接调用系统分享,大大提高工作效率,本篇文章还涉及到二维码生成,以及布局转图片保存相册并刷新相册功能,

一、效果图

在这里插入图片描述

二、实现步骤

1.引入依赖库

二维码生成依赖库:

 implementation 'com.journeyapps:zxing-android-embedded:3.5.0'

2.二维码生成

//实例化
private var codeBitmap: Bitmap? = null //生成二维码
//share_url 要生成的链接或者文案,第二三个参数为二维码宽高
  codeBitmap = QRCodeUtils.createQRCodeBitmap(
                        share_url, 120, 120, "UTF-8",
                        "H", "1", Color.BLACK, Color.WHITE
                    )
//显示到控件上
imag_ewm.setImageBitmap(codeBitmap)

3.布局转图片保存或者分享

1.调用

//relative_tp为要保存的布局,第二个参数为1时分享,2为保存相册
startSaveBitmap(getViewBitmap(relative_tp), "2")

2.实现方法

  /**
     * 布局转图片
     *
     * @param v
     * @return
     */
    private fun getViewBitmap(v: View): Bitmap? {
        v.clearFocus()
        v.isPressed = false
        val willNotCache = v.willNotCacheDrawing()
        v.setWillNotCacheDrawing(false)
        val color = v.drawingCacheBackgroundColor
        v.drawingCacheBackgroundColor = 0
        if (color != 0) {
            v.destroyDrawingCache()
        }
        v.buildDrawingCache()
        val cacheBitmap = v.drawingCache ?: return null
        val bitmap = Bitmap.createBitmap(cacheBitmap)
        v.destroyDrawingCache()
        v.setWillNotCacheDrawing(willNotCache)
        v.drawingCacheBackgroundColor = color
        return bitmap
    }

    /**
     * 图片保存相册
     *
     * @param bitmap
     */
    private fun startSaveBitmap(bitmap: Bitmap?, type: String) {//1分享,2为下载
        if (bitmap == null) {
            return
        }
        // 新建目录appDir,并把图片存到其下
        val appDir: File = File(
            (this@MyInvite.getExternalFilesDir(null)
            !!.getPath() + System.currentTimeMillis()).toString() + "BarcodeBitmap"
        )
        if (!appDir.exists()) {
            appDir.mkdir()
        }
        val fileName = System.currentTimeMillis().toString() + ".jpg"
        val file = File(appDir, fileName)
        try {
            val fos = FileOutputStream(file)
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos)
            fos.flush()
            fos.close()
        } catch (e: IOException) {
            e.printStackTrace()
        }
        if (type == "1") {
            val intent = Intent(Intent.ACTION_SEND)
            intent.type = "image/*" //设置MIME类型
            intent.putExtra(
                Intent.EXTRA_STREAM, FileProvider.getUriForFile(
                    this,
                    "com.hzwl.aidigital.fileprovider",
                    file
                )
            ) //需要分享的文件URI
            startActivity(Intent.createChooser(intent, "分享"))
        } else {
            //把file里面的图片插入到系统相册中
            try {
                MediaStore.Images.Media.insertImage(
                    this@MyInvite.getContentResolver(),
                    file.absolutePath, fileName, null
                )
            } catch (e: FileNotFoundException) {
                e.printStackTrace()
            }
            // 通知相册更新
            this@MyInvite.sendBroadcast(
                Intent(
                    Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
                    Uri.fromFile(file)
                )
            )
            ToastUtils.showToast(resources.getString(R.string.Successfullysaved))
        }

    }

总结

总之这玩意简单如喝水,欢迎大家提建议,但我不会采纳,希望能帮助到有需要的。

相关文章:

  • 新型物联网电瓶车充电桩在居民区的应用优势
  • Git 常用指令及其说明
  • FutureTask 和 CompletableFuture
  • 更好用更现代的字模软件
  • 9.【线性代数】—— 线性相关性, 向量空间的基,维数
  • vue 3D 翻页效果
  • Vscode编辑器获取更新远程最新分支
  • 新民主主义革命理论的形成依据
  • AdapterBias
  • Rk3568驱动开发_驱动实现流程以及本质_3
  • P4282--高精度加减,进制
  • Debain12.9安装大模型微调基础环境
  • 数据驱动未来!天合光能与永洪科技携手开启数字化新篇章
  • 网络安全-系统层攻击流程及防御措施
  • [创业之路-323]:初创期企业谨慎多元化策略,要聚焦策略、压强策略、力出一孔、利出一孔。
  • 【ROS2】SLAM入门:gmapping建图、导航测试记录
  • Apache Flink CDC (Change Data Capture) mysql Kafka
  • 智慧家居中的视频监控系统-------1、视频监控
  • 通过恒定带宽服务器调度改进时间敏感网络(TSN)流量整形
  • 【Java 多线程基础 - 上篇】
  • 19国入境团抵沪并游玩,老外震惊:“怎么能有这么多人?”
  • 著名文博专家吴远明因交通事故离世,享年75岁
  • 舞者王佳俊谈“与AI共舞”:像多了一个舞伴,要考虑它的“感受”
  • 上海:到2027年,实现近海航线及重点海域5G网络高质量覆盖
  • 上海一保租房社区亮相,首批546套房源可拎包入住
  • 定制基因编辑疗法治愈罕见遗传病患儿