北京儿童插座价格联盟

比QQ更炫酷的'选项弹窗'动画

只看楼主 收藏 回复
  • - -
楼主

安卓巴士全球开发者论坛 3.25【北京站】


安卓巴士全球开发者论坛邀请了在Android开发领域拥有多年经验的老司机,与你相约北京,带上你的开发好友,一起聊聊Android开发中,那些一线程序员技术干货。距离活动开始还有:天,没有报名的小伙伴赶紧猛戳活动详情报名啦:2017.3.25安卓巴士全球开发者论坛【北京站】:Android Geek Talk




(文章的意义在于分享技术, 所以这里会重点讲下原理和实现思路, 希望大家看完可以理解实现思路, 这样如果项目有需求,可以随时增删功能, 如果出了bug也更易修改)


在某个版本更新时, UI要求弹出选项框类似于下面的效果:



对, 就是qq这种弹出方式, 而UI给的效果图实际是这样的:



恩, 我们UI的审美认为下面加一层模糊效果会比较好看, 我看了之后认为没什么问题, 就是多了一层模糊效果而已, 但做到后面才发现有的很大的坑在等我.


首先我做出来的自定义view是希望全局只要调一个方法就可以用的, 就像popupwindow那样, 所以我的思路是初始化整个布局, 然后以Toast的方式添加到屏幕最前端.


所以第一步: 初始化整个弹窗布局




第二步: 这里比较重要了, 当点击button, 弹出选项框的时候, 具体做哪些事情



到这里我们所有操作就都完成了 大家是不是感觉很简单, 嘿嘿嘿, 最难的坑其实是模糊图片那里, 因为我们是当用户点击弹出按钮的时候动态模糊的, 所以效率就很重要, 下面是我对activity视图bitmap的处理:



当用户点下按钮时,我们需要立刻就将模糊后的图片显示出来, 下面是我的模糊图片代码:



android里面的高斯模糊我大概总结了一下 基本有三种, 优缺点都有, 我用的是系统推荐的, 速度比较快,而且也简单, 但只能支持android版本17以上, 但现在手机用android4.2以下的估计也很少了.


第二种就是利用glide自定义类继承BitmapTransformation来实现在加载图片时模糊图片,但和第一种差不多,也要android版本17以上才能用


第三种就是用java层的代码, 手动算出像素值, 因为图片处理的代码逻辑都是用java实现的, 所以效率极差, 不推荐.


最后在说一下那个弹出蠕动的动画, 很简单20行代码就ok了, 我是用属性动画写的, 让弹窗view的宽和高的规模从0到1, 然后在从1到0.95, 这样就造成了一个弹出的动态效果, 很easy吧



大功告成出来的效果就是这样的啦



后记


如果我分享的技术对您有所帮助, 或者解决了您的一些问题, 请点一下我喜欢和github上的star哦!!! github主页 我会经常在上面分享我工作中遇到的问题和酷炫的特效实现的, 关注一下啦)




感谢 Zhaoss 提供,源码地址


https://github.com/Zhaoss/HintPopupWindow


代码已全部上传至 Git ,欢迎大家 Star 和 Fork。支持小编也可以在下方+1,投稿及有疑问或者问题的小伙伴可以在下方留言,小编会第一时间与您联系!

大家都在看


基于 Material Design 的 Gank IO 客户端(内含妹子图)


玩转仿探探卡片式滑动效果


程序员也要失业了?微软发明了要取代他们的AI【Bus Weekly】43期


英语不好?是时候打造一款AndroidStudio中记单词的翻译插件了


戳原文,更有料!

举报 | 1楼 回复

友情链接