日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

自定义 VIEW 截图 保存到图库 并分享

發布時間:2025/4/5 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自定义 VIEW 截图 保存到图库 并分享 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

需求是先顯示將要分享視圖的縮略圖,點擊縮略圖再顯示大圖,并且支持保存到本地圖庫效果如下

將視圖生成bitmap的方法

fun loadBitmapFromView(v: View): Bitmap {val w = v.measuredWidthval h = v.measuredHeightval bmp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888)val c = Canvas(bmp)v.layout(0,0, w, h)v.draw(c)return bmp}

注意調用時機一定要view layout完成,否則無法生成的Bitmap。View.post可以保證調用在界面繪制完成之后調用,用法如下

iv_share.post {bitmap = ImageSaver.loadBitmapFromView(sv_img_activity_share_detail) //Glide 加載生成的圖片ImageLoader.load(iv_image_share_detail,bitmap)}

將bitmap 保存成圖片

fun saveImage(bitmap: Bitmap, saveFile: File) {val fos = FileOutputStream(saveFile)bitmap.compress(android.graphics.Bitmap.CompressFormat.JPEG, 100, fos)fos.flush()fos.close()}

targetSdk > 22 需要處理權限問題,比我如我要將生成的圖片保存到圖庫

private fun saveImages() {try {val file = File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),System.currentTimeMillis().toString() + ".png")//調用保存方法ImageSaver.saveImage(bitmap, file)Toaster.show(R.string.save_success)//保存成功發送廣播通知圖庫更新,沒有這條必須手機重啟才能看到新圖片sendBroadcast(Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)))} catch (e: Exception) {Toaster.show(R.string.save_failed)}}

這里第一張預覽圖的做法是,放置一個鋪滿全屏的,將要生成截圖的View,設置其屬性為
android:visibility="invisible"
等待截圖完畢后設置其屬性為
android:visibility="gone"
最后將生成的bitmap設置到ImageView上。這樣能保證縮略圖中的文字不變形。

總結

以上是生活随笔為你收集整理的自定义 VIEW 截图 保存到图库 并分享的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。