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

将视图生成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. vue 插入word模板 项目_10 分钟为你的 vue 项目编写代码文档
  2. [JavaWeb-Servlet]概述与快速入门
  3. vscode设置中文,设置中文不成功问题
  4. ApacheCN 交流社区一周热点 2019.4 wk1
  5. 书单|阅读让人越来越低
  6. CentOS7下安装 mysql5.7.25(glibc版)(可用)
  7. HTML5 vs. Flash:Adobe面向何方?
  8. 每天一道算法题:无重复字符的最长子串
  9. readelf使用说明
  10. DB2远程链接数据库编目命令代码
  11. 公众号搜题接口API
  12. tableau 常用函数整理
  13. ​杭州阿里、海康、网易等组成 HR 联盟,以后你还敢跳槽吗?
  14. xxl-job的学习使用
  15. 邓俊辉 数据结构 习题4-18 Fermat-Lagrange定理代码实现
  16. 详解Guitar Pro 7小节的组织定义
  17. html+js的lrc歌词同步播放器
  18. 谷歌Android笔记本,运行安卓+Chrome OS合体新系统:谷歌Pixel 3笔记本被曝光
  19. 2.6_11 Redis主从复制、哨兵模式、分片集群
  20. 游戏开发商如何租用合适稳定的游戏服务器?

热门文章

  1. Spring Boot 项目实现热部署
  2. linux (ubuntu) 命令学习笔记
  3. ASP.NET Core 中文文档 第四章 MVC(4.3)过滤器
  4. iOS原生地图与高德地图的使用
  5. mybatis association表关联与rowbounds共同使用时的异常及其解决方案
  6. Thinkphp学习笔记-编辑工具Sublime license
  7. Spring @Autowired、@Resource、@Required、@Component、@Repository、@Service、@Controller注解的用法和作用...
  8. hibernate二级缓存理解
  9. func_num_args()
  10. SQL:判断字符类型是否为数字