当前位置: 首页 > 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 = falseval willNotCache = v.willNotCacheDrawing()v.setWillNotCacheDrawing(false)val color = v.drawingCacheBackgroundColorv.drawingCacheBackgroundColor = 0if (color != 0) {v.destroyDrawingCache()}v.buildDrawingCache()val cacheBitmap = v.drawingCache ?: return nullval bitmap = Bitmap.createBitmap(cacheBitmap)v.destroyDrawingCache()v.setWillNotCacheDrawing(willNotCache)v.drawingCacheBackgroundColor = colorreturn 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,"applicationId(也就是包名).fileprovider",file)) //需要分享的文件URIstartActivity(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))}}

总结

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

相关文章:

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

文章目录 前言一、效果图二、实现步骤1.引入依赖库2.二维码生成3.布局转图片保存或者分享 总结 前言 其实现在很多分享都是我们自定义的,更多的是在界面加了很多东西,然后把整个界面转成图片保存相册和分享,而且现在分享都不需要第三方&…...

EX_25/2/24

写一个三角形类,拥有私有成员 a,b,c 三条边 写好构造函数初始化 abc 以及 abc 的set get 接口 再写一个等腰三角形类,继承自三角形类 1:写好构造函数,初始化三条边 2:要求无论如何,等腰三角形类对象&#x…...

ElasticSearch公共方法封装

业务场景 1、RestClientBuilder初始化(同时支持单机与集群) 2、发送ES查询请求公共方法封装(支持sql、kql、代理访问、集群访问、鉴权支持) 3、判断ES索引是否存在(/_cat/indices/${indexName}) 4、判断ES…...

JVM之JVM的组成

Java 虚拟机(JVM)是 Java 程序的运行核心,它主要由类加载系统、运行时数据区、执行引擎和本地方法接口这几个关键部分组成。 类加载系统(Class Loading System) 类加载系统负责在程序运行时动态地将 Java 类加载到 J…...

贪心算法

int a[1000], b5, c8; swap(b, c); // 交换操作 memset(a, 0, sizeof(a)); // 初始化为0或-1 引导问题 为一个小老鼠准备了M磅的猫粮,准备去和看守仓库的猫做交易,因为仓库里有小老鼠喜欢吃的五香豆,第i个房间有J[i] 磅的五香豆&#xf…...

Linux下安装中文输入法总结

Linux下安装中文输入法总结_linux 微软拼音-CSDN博客文章浏览阅读4.2w次,点赞21次,收藏92次。众所周知,fcitx和ibus是两款很好用的Linux中文输入法框架。下面来说一下其安装方法以及会踩的坑。首先fcitx和ibus是不能共存的,两者只…...

人工智能(AI):科技新纪元的领航者

摘要 人工智能(AI)作为当今科技领域最具变革性的力量之一,正以惊人的速度重塑着我们的世界。本文旨在全面且专业地介绍人工智能,涵盖其定义、发展历程、关键技术、应用领域、面临的挑战以及未来展望等方面,以期为读者…...

c3p0、Druid连接池+工具类 Apache-DbUtils (详解!!!)

数据库连接池是在应用程序启动时创建一定数量的数据库连接,并将这些连接存储在池中。当应用程序需要与数据库通信时,它可以向池中请求一个连接,使用完后将连接归还给池,而不是关闭连接。这样可以减少创建和关闭连接的开销&#xf…...

鸿蒙开发深入浅出03(封装通用LazyForEach实现懒加载)

鸿蒙开发深入浅出03(封装通用LazyForEach实现懒加载) 1、效果展示2、ets/models/BasicDataSource.ets3、ets/models/HomeData.ets4、ets/api/home.ets5、ets/pages/Home.ets6、ets/views/Home/SwiperLayout.ets7、后端代码 1、效果展示 2、ets/models/Ba…...

AWS - Redshift - 外部表读取 Parquet 文件中 timestamp 类型的数据

问题: 通过 Redshift Spectrum 功能可以读取 S3 中的文件,当读取 Parquet 文件时,如果列格式设置为 timestamp, 通过 psql 客户端读取会出现以下错误: testdb# select * from myspectrum_schema_0219.test_ns; ERROR…...

Ubuntu20.04之VNC的安装使用与常见问题

Ubuntu20.04之VNC的安装与使用 安装图形桌面选择安装gnome桌面选择安装xface桌面 VNC-Server安装配置开机自启 VNC Clientroot用户无法登入问题临时方案永久方案 安装图形桌面 Ubuntu20.04主流的图形桌面有gnome和xface两种,两种桌面的安装方式我都会写&#xff0c…...

vue3学习3-route

创建路由器: 应用路由器: 路由展示区RouterView 和 路由跳转RouterLink: 路由组件(在路由配置文件中配置的)一般放到pages/views文件夹下 路由组件切换的时候执行的是 挂载/卸载操作 onMounted / onUnmouted 路由器两…...

C++:dfs,bfs各两则

1.木棒 167. 木棒 - AcWing题库 乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过 5050 个长度单位。 然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度。 请你设计一个程序…...

RK Android11 WiFi模组 AIC8800 驱动移植流程

RK Android WiFi模组 AIC8800 驱动移植流程 作者:Witheart更新时间:20250220 概要:本文介绍了基于 AIC8800D40 芯片的 WiFi6 模组 BL-M8800DS2-40 在 RK3568 平台上的驱动移植流程。主要涉及环境搭建、驱动代码分析、设备树修改、驱动编译配…...

深度学习-6.用于计算机视觉的深度学习

Deep Learning - Lecture 6 Deep Learning for Computer Vision 简介深度学习在计算机视觉领域的发展时间线 语义分割语义分割系统的类型上采样层语义分割的 SegNet 架构软件中的SegNet 架构数据标注 目标检测与识别目标检测与识别问题两阶段和一阶段目标检测与识别两阶段检测器…...

免费送源码:ava+springboot+MySQL 基于springboot 宠物医院管理系统的设计与实现 计算机毕业设计原创定制

摘 要 在当今社会,宠物已经成为人们生活中不可或缺的一部分,因此宠物健康和医疗问题也备受关注。为了更好地管理宠物医院的日常运营和提供优质的医疗服务,本研究设计并实现了一套基于Spring Boot框架的宠物医院管理系统。这一系统集成了多项功…...

【电机控制器】ESP32-C3语言模型——DeepSeek

【电机控制器】ESP32-C3语言模型——DeepSeek 文章目录 [TOC](文章目录) 前言一、简介二、代码三、实验结果四、参考资料总结 前言 使用工具&#xff1a; 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、简介 二、代码 #include <Arduino.h&g…...

小型字符级语言模型的改进方向和策略

小型字符级语言模型的改进方向和策略 一、回顾小型字符级语言模型的处理流程 前文我们已经从零开始构建了一个小型字符级语言模型,那么如何改进和完善我们的模型呢?有哪些改进的方向?我们先回顾一下模型的流程: 图1 小型字符级语言模型的处理流程 (1)核心模块交互过程:…...

力扣-贪心-56 合并区间

思路 先按照左区间进行排序&#xff0c;然后初始化left和right&#xff0c;重叠时&#xff0c;更新right&#xff0c;不重叠时&#xff0c;收集区间 代码 class Solution { public:static bool cmp(vector<int> a, vector<int> b){if(a[0] b[0]){return a[1] &…...

vue 3D 翻页效果

<template><view class"swipe-container" touchstart"onTouchStart" touchmove"onTouchMove" touchend"onTouchEnd"><view class"page">初始页</view></view> </template><script&g…...

别再复制粘贴了!手把手教你用CMake和VS2017编译Glog v0.5.0(Windows 10环境)

Windows下Glog编译实战&#xff1a;从CMake配置到VS2017避坑指南 在Windows平台上编译开源C库往往是一场充满未知的冒险——尤其是当你面对Google出品的Glog日志库时。不同于简单的"下载-安装-运行"三步走&#xff0c;Glog的编译过程充满了各种微妙的配置选项和隐藏陷…...

AI专著生成大揭秘:巧用AI工具,20万字专著写作不再是难题!

学术专著的生命力主要在于其逻辑的严密性&#xff0c;而逻辑论证往往是写作过程中最容易出错的环节。一部专著需要围绕其中心观点进行系统性的论证&#xff0c;不仅要对每个论点进行充分的讲解&#xff0c;还要处理各学派之间的争议观点&#xff0c;更要确保整个理论框架的一致…...

不只是仿真:解锁Icarus Verilog (iverilog) 在Windows上的三个隐藏用法(语法检查/转VHDL/库管理)

解锁Icarus Verilog在Windows中的高阶应用&#xff1a;从语法检查到混合语言开发 在数字电路设计领域&#xff0c;Verilog作为主流硬件描述语言之一&#xff0c;其开发工具链的灵活运用往往能大幅提升工作效率。虽然大多数工程师熟悉Icarus Verilog&#xff08;iverilog&#x…...

无惧东北零下30℃极寒!国民高端品牌追觅空调中标校园工程市场!

近年来&#xff0c;随着教育基础设施的持续升级&#xff0c;校园工程市场已成为空调行业增长最为迅猛的细分赛道之一。日前&#xff0c;追觅空调在黑龙江省齐齐哈尔市某中学校园空调采购项目中&#xff0c;凭借刘亦菲代言的超高品牌国民度、扎实的产品实力和完善的服务体系等综…...

告别手动拼报文!用MThings调试Modbus设备,这5个高效功能让我效率翻倍

告别手动拼报文&#xff01;用MThings调试Modbus设备&#xff0c;这5个高效功能让我效率翻倍 调试Modbus设备时&#xff0c;你是否经历过这样的场景&#xff1a;盯着十六进制报文反复核对CRC校验码&#xff0c;手忙脚乱地切换计算器和串口助手&#xff0c;或是为了批量读取寄存…...

MaaYuan:终极智能游戏自动化助手,3分钟解放你的游戏时间

MaaYuan&#xff1a;终极智能游戏自动化助手&#xff0c;3分钟解放你的游戏时间 【免费下载链接】MaaYuan 代号鸢 / 如鸢 一键长草小助手 项目地址: https://gitcode.com/gh_mirrors/ma/MaaYuan MaaYuan是一款免费开源的智能游戏自动化工具&#xff0c;专门为《代号鸢》…...

PMP认证备考全攻略:费用、周期与机构选择常见问题解答

PMP&#xff08;项目管理专业人士&#xff09;认证作为项目管理领域的“黄金标准”&#xff0c;近年来在国内职场的热度持续走高。对于想要系统提升项目管理能力或获取资质背书的职场人来说&#xff0c;报考前往往会有诸多疑问。针对大家最关心的费用投入、备考周期以及如何选择…...

Java后端开发实战:手把手教你用e签宝API搞定电子合同签署(含回调处理与Token优化)

Java后端开发实战&#xff1a;e签宝API深度集成与电子合同签署优化指南 在数字化转型浪潮中&#xff0c;电子合同已成为企业服务升级的标配功能。作为Java开发者&#xff0c;如何高效集成第三方电子签章平台&#xff0c;同时确保系统稳定性和业务连贯性&#xff0c;是提升SaaS…...

暗黑3游戏自动化难题的终极解决方案:D3KeyHelper宏工具深度解析

暗黑3游戏自动化难题的终极解决方案&#xff1a;D3KeyHelper宏工具深度解析 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面&#xff0c;可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper 在暗黑破坏神3的高强度刷…...

一键部署LongCat-Image-Edit:开箱即用的文本驱动图像编辑模型

一键部署LongCat-Image-Edit&#xff1a;开箱即用的文本驱动图像编辑模型 1. 模型核心能力与技术特点 LongCat-Image-Edit是美团LongCat团队推出的轻量级图像编辑模型&#xff0c;专注于通过自然语言指令实现精准的图像修改。这个6B参数的模型在多项基准测试中达到了开源模型…...