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))}}

總結

總之這玩意簡單如喝水,歡迎大家提建議,但我不會采納,希望能幫助到有需要的。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/896340.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/896340.shtml
英文地址,請注明出處:http://en.pswp.cn/news/896340.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

以繪圖(繪制點、直線、圓、橢圓、多段線)為例子 通過設計模式中的命令模式實現

為了在命令模式的基礎上實現撤銷(Undo)和回退(Redo)功能,我們可以在每個命令類中記錄一些必要的狀態,允許我們撤銷之前的操作,并在需要時回退操作。常見的做法是使用一個命令堆棧來存儲歷史命令…

git從本地其他設備上fetch分支

在 Git 中,如果你想從本地其他設備上獲取分支,可以通過以下幾種方式實現。不過,需要注意的是,Git 本身是分布式版本控制系統,通常我們是從遠程倉庫(如 GitHub、GitLab 等)拉取分支,而…

故障診斷 | Matlab實現基于DBO-BP-Bagging多特征分類預測/故障診斷

故障診斷 | Matlab實現基于DBO-BP-Bagging多特征分類預測/故障診斷 目錄 故障診斷 | Matlab實現基于DBO-BP-Bagging多特征分類預測/故障診斷分類效果基本介紹模型描述DBO-BP-Bagging蜣螂算法優化多特征分類預測一、引言1.1、研究背景和意義1.2、研究現狀1.3、研究目的與方法 二…

CentOS停服后的替代選擇:openEuler、Rocky Linux及其他系統的未來展望

CentOS停服后的替代選擇:openEuler、Rocky Linux及其他系統的未來展望 引言CentOS停服的背景華為openEuler:面向未來的開源操作系統1. 簡介2. 特點3. 發展趨勢 Rocky Linux:CentOS的精神繼承者1. 簡介2. 特點3. 發展趨勢 其他可選的替代系統1…

docker部署go簡單web項目(無mysql等附加功能)

首先準備好go語言代碼 代碼表示當訪問主機上8080端口下的/hello路徑時,會返回hello,world。 package mainimport ("fmt""github.com/gin-gonic/gin" )type hh struct {S string }func main() {router : gin.Default()router.GET(&…

OceanBase數據庫實戰:Windows Docker部署與DBeaver無縫對接

一、前言 OceanBase 是一款高性能、高可擴展的分布式數據庫,適用于大規模數據處理和企業級應用。 隨著大數據和云計算的普及,OceanBase 在企業數字化轉型中扮演著重要角色。學習 OceanBase 可以幫助開發者掌握先進的分布式數據庫技術,提升數…

在 HuggingFace 中使用 SSH 進行下載數據集和模型

SSH 是一種 安全通訊的協議,我們通過配置 SSH 的密鑰 來在 Git 上實現 Huggingface 模型的命令行下載。 參考網址:https://huggingface.co/docs/hub/security-git-ssh 點擊自己的頭像,點擊 Add SSH key 在 Windows 上,我們實現已…

.NET Core MVC IHttpActionResult 設置Headers

最近碰到調用我的方法要求返回一個代碼值,但是要求是不放在返回實體里,而是放在返回的Headers上 本來返回我是直接用 return Json(res) 這種封裝的方法特別簡單,但是沒有發現設置headers的地方 查詢過之后不得已換了個返回 //原來方式 //…

Linux-----進程間通信

一、按通信范圍分類 同一主機進程通信 傳統IPC方式: 管道(無名管道、有名管道)信號(Signal) System V IPC: 共享內存(效率最高)消息隊列信號量 POSIX IPC(較新標準&#…

Ant Design按鈕樣式深度適配:實現<Button>與<a>標簽顏色完美同步

Ant Design按鈕樣式深度適配&#xff1a;實現與標簽顏色完美同步 問題現象診斷 組件結構原型 <Button type"link" disabled{disabled}><a href"...">下載</a> </Button>樣式沖突表現 狀態按鈕顏色鏈接顏色視覺問題啟用態Ant藍…

使用Python爬蟲獲取淘寶商品詳情:API返回值說明與案例指南

在電商數據分析和運營中&#xff0c;獲取淘寶商品詳情是常見的需求。淘寶開放平臺提供了豐富的API接口&#xff0c;允許開發者通過合法的方式獲取商品信息。本文將詳細介紹如何使用Python編寫爬蟲&#xff0c;通過淘寶API獲取商品詳情&#xff0c;并解析API返回值的含義和結構。…

并發 -- 無鎖算法與結構

文章目錄 什么是無鎖算法什么是原子變量什么是CAS操作Compare-And-Swap Weak在哪些情況下會失敗舉例說明無鎖結構無鎖結構的問題 什么是無鎖算法 無鎖算法&#xff08;Lock-Free Algorithm&#xff09;是一種并發編程技術&#xff0c;旨在實現多線程環境下的高效數據共享&…

考研/保研復試英語問答題庫(華工建院)

華南理工大學建筑學院保研/考研 英語復試題庫&#xff0c;由華工保研er和學碩筆試第一同學一起整理&#xff0c;覆蓋面廣&#xff0c;助力考研/保研上岸&#xff01;需要&#x1f447;載可到文章末尾見小&#x1f360;。 以下是主要內容&#xff1a; Part0 復試英語的方法論 Pa…

岳陽市美術館預約平臺(小程序論文源碼調試講解)

第4章 系統設計 一個成功設計的系統在內容上必定是豐富的&#xff0c;在系統外觀或系統功能上必定是對用戶友好的。所以為了提升系統的價值&#xff0c;吸引更多的訪問者訪問系統&#xff0c;以及讓來訪用戶可以花費更多時間停留在系統上&#xff0c;則表明該系統設計得比較專…

Python游戲編程之賽車游戲6-3

1 “敵人”汽車類的創建 在創建玩家汽車類之后&#xff0c;接下來創建“敵人”汽車類。“敵人”汽車類與玩家類一樣&#xff0c;也是包含兩個方法&#xff0c;一個是__init__()&#xff0c;另一個是move()。 1.1 __init__()方法 “敵人”汽車類的__init__()方法代碼如圖1所示…

TCP/UDP調試工具推薦:Socket通信圖解教程

TCP/UDP調試工具推薦&#xff1a;Socket通信圖解教程 一、引言二、串口調試流程三、下載鏈接 SocketTool 調試助手是一款旨在協助程序員和網絡管理員進行TCP和UDP協議調試的網絡通信工具。TCP作為一種面向連接、可靠的協議&#xff0c;具有諸如連接管理、數據分片與重組、流量和…

神經網絡 - 神經元

人工神經元(Artificial Neuron)&#xff0c;簡稱神經元(Neuron)&#xff0c;是構成神經網絡的基本單元&#xff0c;其主要是模擬生物神經元的結構和特性&#xff0c;接收一組輸入信號并產生輸出。 生物學家在 20 世紀初就發現了生物神經元的結構。一個生物神經元通常具有多個樹…

藍橋杯備考:貪心算法之矩陣消除游戲

這道題是牛客上的一道題&#xff0c;它呢和我們之前的排座位游戲非常之相似&#xff0c;但是&#xff0c;排座位問題選擇行和列是不會改變元素的值的&#xff0c;這道題呢每每選一行都會把這行或者這列清零&#xff0c;所以我們的策略就是先用二進制把選擇所有行的情況全部枚舉…

DeepSeek系統架構的逐層分類拆解分析,從底層基礎設施到用戶端分發全鏈路

一、底層基礎設施層 1. 硬件服務器集群 算力單元&#xff1a; GPU集群&#xff1a;基于NVIDIA H800/H100 GPU構建&#xff0c;單集群規模超10,000卡&#xff0c;采用NVLink全互聯架構實現低延遲通信。國產化支持&#xff1a;適配海光DCU、寒武紀MLU等國產芯片&#xff0c;通過…

ktransformers 上的 DeepSeek-R1 671B open-webui

ktransformers 上的 DeepSeek-R1 671B open-webui 一、下載GGUF模型1. 創建目錄2. 魔塔下載 DeepSeek-R1-Q4_K_M3. 安裝顯卡驅動和cuda4. 顯卡 NVIDIA GeForce RTX 4090 二、安裝ktransformers1. 安裝依賴2. 安裝uv工具鏈3. 下載源碼4. 創建python虛擬環境 三、編譯ktransforme…