自定义 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 截图 保存到图库 并分享相关推荐
- php 网页截屏,php使用CutyCapt实现网页截图保存的方法
本文实例讲述了php使用CutyCapt实现网页截图保存的方法.分享给大家供大家参考,具体如下: 网页截图这个功能大家可能用到最多的就是QQ截图,或利用asp.net来实现截图,其实我们也可以直接使用 ...
- Android自定义View分享——仿微信朋友圈图片合并效果
写在前面 笔者近来在学习Android自定义View,收集了一些不算复杂但又"长得"还可以的自定义View效果实现,之前分享过两个效果:一个水平的进度条,一个圆形温度显示器,如果你 ...
- Android自定义View分享——仿网易云音乐留声机效果
写在前面 这是笔者自学习自定义View以来,分享的第五篇效果,之前分享过一篇动态时钟效果的自定义View,如果有兴趣的可以看看: Android自定义View分享--一个时钟 之前的博客笔者一般都会说 ...
- 安卓自定义View的状态保存与恢复
安卓自定义View的状态保存与恢复 我们在开发某些安卓应用(如安卓小游戏)时,可能会用到自定义View,这时候往往需要保存自定义View的状态信息,以便在遇到某些情况(如由于系统内存资源紧张被系统杀死 ...
- android 圆环温度控件,Android自定义View分享——一个圆形温度显示器
写在前面 笔者近来在学习Android自定义View,收集了一些不算复杂但又"长得"还可以的自定义View效果实现,之前分享过一个水平的进度条,如果你有兴趣的话可以看看: Andr ...
- Android技术分享| 【Android 自定义View】多人视频通话控件
[Android 自定义View]多人视频通话控件 *以上图片截自微信等待中界面 等待中界面 上图是微信多人视频通话时未接通的界面状态,可见每个人的 View 中大致需包含了以下元素. 头像 昵称 L ...
- Android技术分享| 【自习室】自定义View代替通知动画(完)
在之前的文章中我们实现了自定义View需要的基本功能,本篇中我们通过 Timer 实现动画功能.我偷偷修改了一些数据结构,一会在下面贴出来. 最终效果图: 动画是通过 Timer 每17毫秒调用 Vi ...
- 2017了,回家前 年末 分享:下雨,飘雪,红包雨,碰撞球,自定义View
(本博客为原创:http://www.cnblogs.com/linguanh/) 目录: 效果展示 感想 代码拆解 开源地址 效果展示 有没有兴趣继续看下去,直接看下"颜值"是第 ...
- Android 之自定义view实现水波纹效果
在实际的开发中,很多时候还会遇到相对比较复杂的需求,比如产品妹纸或UI妹纸在哪看了个让人兴奋的效果,兴致高昂的来找你,看了之后目的很明确,当然就是希望你能给她: 在这样的关键时候,身子板就一定得硬了, ...
最新文章
- 平衡二叉树-splay c/c++代码实现
- android 如何在线程缓存实体类
- Struts2中使用OGNL表达式投影(过滤)集合
- 润乾报表 数据集ds1中,数据源xmglxt_x3无数据库连接,且未设定数据连接工厂,请检查数据源设定:...
- webapp入门到实战_web前端入门到实战:前端高手在CSS 开发效率的必备片段
- android 常用开发插件,Android Studio 开发利器【常用插件】
- 拼接 结果集_JUST技术:利用轨迹拼接分析实时可达区域|技术前沿
- PHP5.5+Nginx1.9
- java word转html 报错org/apache/poi/xwpf/usermodel/IRunBody
- 秀米编辑器详细使用教程
- DuckDuckGo
- Unity3D游戏开发从零单排(五) - 导入CS模型到Unity3D
- Parallels Desktop 16 已损坏,无法打开,您应该推出磁盘映像。怎么解决?
- 从jieba分词到BERT-wwm——中文自然语言处理(NLP)基础分享系列(1)
- Java面向对象题库
- 复利现值系数怎么用计算机计算,复利现值系数计算方法是怎样的?
- 我的专业偶像作文计算机,我的崇拜的偶像作文(通用5篇)
- avatar-view
- 语法体系:揭秘同位语从句day9
- 在windows上通过vnc实现远程虚拟界面控制jenson tx2
热门文章
- JAVA入门笔记·我的第一个JAVA程序
- 【干货】原生js做的一维数组对象,二维数组对象的模糊查询(前端网备份)...
- 聊聊storm的LoggingMetricsConsumer
- 通过容器编排和服务网格来改进Java微服务的可测性
- Android 依赖注入可以更简单 —— 新版本 Dagger 2 使用教学
- 数据库连接客户端使用(db2,oracle,mysql)
- java中的io系统详解(转)
- 网络蜘蛛Spider 工作原理
- 你在中国有去过那些地区?
- CSP认证201312-3最大的矩形[C++题解]:枚举