需求是先显示将要分享视图的缩略图,点击缩略图再显示大图,并且支持保存到本地图库效果如下

将视图生成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 截图 保存到图库 并分享相关推荐

  1. php 网页截屏,php使用CutyCapt实现网页截图保存的方法

    本文实例讲述了php使用CutyCapt实现网页截图保存的方法.分享给大家供大家参考,具体如下: 网页截图这个功能大家可能用到最多的就是QQ截图,或利用asp.net来实现截图,其实我们也可以直接使用 ...

  2. Android自定义View分享——仿微信朋友圈图片合并效果

    写在前面 笔者近来在学习Android自定义View,收集了一些不算复杂但又"长得"还可以的自定义View效果实现,之前分享过两个效果:一个水平的进度条,一个圆形温度显示器,如果你 ...

  3. Android自定义View分享——仿网易云音乐留声机效果

    写在前面 这是笔者自学习自定义View以来,分享的第五篇效果,之前分享过一篇动态时钟效果的自定义View,如果有兴趣的可以看看: Android自定义View分享--一个时钟 之前的博客笔者一般都会说 ...

  4. 安卓自定义View的状态保存与恢复

    安卓自定义View的状态保存与恢复 我们在开发某些安卓应用(如安卓小游戏)时,可能会用到自定义View,这时候往往需要保存自定义View的状态信息,以便在遇到某些情况(如由于系统内存资源紧张被系统杀死 ...

  5. android 圆环温度控件,Android自定义View分享——一个圆形温度显示器

    写在前面 笔者近来在学习Android自定义View,收集了一些不算复杂但又"长得"还可以的自定义View效果实现,之前分享过一个水平的进度条,如果你有兴趣的话可以看看: Andr ...

  6. Android技术分享| 【Android 自定义View】多人视频通话控件

    [Android 自定义View]多人视频通话控件 *以上图片截自微信等待中界面 等待中界面 上图是微信多人视频通话时未接通的界面状态,可见每个人的 View 中大致需包含了以下元素. 头像 昵称 L ...

  7. Android技术分享| 【自习室】自定义View代替通知动画(完)

    在之前的文章中我们实现了自定义View需要的基本功能,本篇中我们通过 Timer 实现动画功能.我偷偷修改了一些数据结构,一会在下面贴出来. 最终效果图: 动画是通过 Timer 每17毫秒调用 Vi ...

  8. 2017了,回家前 年末 分享:下雨,飘雪,红包雨,碰撞球,自定义View

    (本博客为原创:http://www.cnblogs.com/linguanh/) 目录: 效果展示 感想 代码拆解 开源地址 效果展示 有没有兴趣继续看下去,直接看下"颜值"是第 ...

  9. Android 之自定义view实现水波纹效果

    在实际的开发中,很多时候还会遇到相对比较复杂的需求,比如产品妹纸或UI妹纸在哪看了个让人兴奋的效果,兴致高昂的来找你,看了之后目的很明确,当然就是希望你能给她: 在这样的关键时候,身子板就一定得硬了, ...

最新文章

  1. 平衡二叉树-splay c/c++代码实现
  2. android 如何在线程缓存实体类
  3. Struts2中使用OGNL表达式投影(过滤)集合
  4. 润乾报表 数据集ds1中,数据源xmglxt_x3无数据库连接,且未设定数据连接工厂,请检查数据源设定:...
  5. webapp入门到实战_web前端入门到实战:前端高手在CSS 开发效率的必备片段
  6. android 常用开发插件,Android Studio 开发利器【常用插件】
  7. 拼接 结果集_JUST技术:利用轨迹拼接分析实时可达区域|技术前沿
  8. PHP5.5+Nginx1.9
  9. java word转html 报错org/apache/poi/xwpf/usermodel/IRunBody
  10. 秀米编辑器详细使用教程
  11. DuckDuckGo
  12. Unity3D游戏开发从零单排(五) - 导入CS模型到Unity3D
  13. Parallels Desktop 16 已损坏,无法打开,您应该推出磁盘映像。怎么解决?
  14. 从jieba分词到BERT-wwm——中文自然语言处理(NLP)基础分享系列(1)
  15. Java面向对象题库
  16. 复利现值系数怎么用计算机计算,复利现值系数计算方法是怎样的?
  17. 我的专业偶像作文计算机,我的崇拜的偶像作文(通用5篇)
  18. avatar-view
  19. 语法体系:揭秘同位语从句day9
  20. 在windows上通过vnc实现远程虚拟界面控制jenson tx2

热门文章

  1. JAVA入门笔记·我的第一个JAVA程序
  2. 【干货】原生js做的一维数组对象,二维数组对象的模糊查询(前端网备份)...
  3. 聊聊storm的LoggingMetricsConsumer
  4. 通过容器编排和服务网格来改进Java微服务的可测性
  5. Android 依赖注入可以更简单 —— 新版本 Dagger 2 使用教学
  6. 数据库连接客户端使用(db2,oracle,mysql)
  7. java中的io系统详解(转)
  8. 网络蜘蛛Spider 工作原理
  9. 你在中国有去过那些地区?
  10. CSP认证201312-3最大的矩形[C++题解]:枚举