前言:
今天给大家带来的是关于一个Activity
如何弹出的技巧,还是延续一贯的实用性风格,写本文的出发点为了帮助更多IT同僚少走弯路(PS
:昨晚为解决这个Activity
完美弹出问题,折腾到深夜=.=#)
正文:
本文解决的情景环境为:大家经常会遇到app
中要求各种分享到微信,QQ
的需求,我们需要从底部弹出一个类似这样的效果
注意看到这里你可能会说这很简单啊,用Popwindow
就能搞定。但是我今天要讲的做法是用Activity
来实现此效果,为什么不用Popwindow
原因很简单,因为我app
里面很多地方用到分享,所以作为一名爱好Java
重构,复用的Android
攻城狮,我是完全不想每个用到分享的界面都写上Popwindow
然后在里面在写一堆分享的配置,如此鸡肋!Activity
来实现替代分享Popwindw
的好处就是我只要写一个ShareActivity
即可,需要调用分享的界面只要像启动普通Activity
一样即可完美实现分享效果,简单好用!
如:
BUG来了
既然是用Activity
来实现你必然会想到修改Activity
为dialog
主题,那么你会得到这样
还有这样
中间弹出的就是没有任何处理的普通android:theme=“android:Theme.Dialog”
的Activity
。所以他显示的位置默认就在中间,那么我想要把它显示在底部,可以在ShareActivity
里面
这样设置,那么你看到的位置就会在底部,不过不要高兴的太早,到处是坑,会发现这个ShareActivity
的显示效果会距离左,右,底部10dp
左右,有强迫症的人八成已经皮痒了。我后来去查看了主题的源码,发现android:Theme.Dialog
里面有这么一段
就是这几个参数,我想通过继承android:Theme.Dialog
修改覆盖这几个值,都无果。后来我放弃了这样的做法,舍弃这个主题。
我自己写了一个themestyle
这个时候,你再OnCreate
的时候写getWindow().setGravity(Gravity.BOTTOM);
,你会发现已经完全贴合屏幕底部了,但是还有左右两边还有10dp
的间距,真是醉了,最终我找到了一个好办法,这样:
恭喜终于实现了我想要的效果,这个时候为了追求UI灵动性,我在自己的themestyle
中加入了<item name="android:windowAnimationStyle">@style/dialog_animation</item>
,这个动画就是模仿从底部弹出渐变的动画效果,动画的xml我也列出来
终于完美版诞生!来之不易,血泪史的经验。
总结
Android
里面一样的效果有N
种实现方式,不要满足单一古板的做法,也许效果都能达到,但是我们需要尝试,创新,这样代码才会越来越优雅。一起越来越强吧!fighting!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。