欢迎访问 生活随笔!

生活随笔

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

编程问答

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

发布时间:2025/4/5 编程问答 52 豆豆
生活随笔 收集整理的这篇文章主要介绍了 自定义 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 截图 保存到图库 并分享的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。