自定义 VIEW 截图 保存到图库 并分享
生活随笔
收集整理的这篇文章主要介绍了
自定义 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 截图 保存到图库 并分享的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: “美积电”?“投名状”?台积电和英特尔达
- 下一篇: android 从相册或相机获取图片并且