SDK 27,
即Android 8.0后,
透明主题就不可使用了,
否则会引发Only fullscreen opaque activities can request orientation
所以我重新设计了一种新的右滑关闭,
不需要透明主题,
感兴趣请移步:
https://blog.csdn.net/bamboy_/article/details/83863260
IOS的右滑关闭效果确实好用,
Android上虽然系统没有直接支持,
但比如微信就实现了类似效果。
我当然也想实现一下,
为同学们带来比IOS更好用的右滑关闭效果,
上图:
如果你先看了其他同学的效果就会发现,
我的效果相较之下有以下优点:
1.我是连带状态栏一起同步滑动的,
不是界面关闭后状态栏颜色啪一下变没。
2.其他同学是必须滑动到指定距离松手才会关闭,
而我的则不是。
我的是正常滑动速度的时候,
无论滑动距离多小都会关闭;
滑动慢或停止的时候,
大于屏幕一般就关闭,
小于就不关闭。
3.其他同学是边缘有一条阴影,
我的是黑色遮罩把下面的整个界面覆盖,
然后根据滑动距离与屏幕宽度比例来调整透明度。
相信也有同学会发现,
我的效果图上分成了有TitleBar和没有TitleBar两种情况,
这就是我的Demo的缺点啦,
我的之所以能够连带状态栏一起同步,
是因为我用的是完全沉浸式的设计,
所以才能保证完全同步。
但是完全沉浸式有个缺点,
就是开发的时候要控制状态栏间距,
当然,
为了弥补这个缺点,
我在Demo里附上了弥补方法:
当你的界面没有TitleBar,
那你什么都不用做,
我已经帮你兼容好了。
当你有TitleBar的时候,
只需要调用这个方法就好了。
// 设置TitleBar沉浸式
setImmerseTitleBar(titleBarView);
介绍完缺点,
那么下面就开始教大家怎么使用我的右滑关闭吧。
首先第一步:
将我的两个包拷到你的项目下:
第二步:
把所有需要右滑关闭的Activity继承于我的Activity:
public class MainActivity extends BaseActivity{
……
}
这样就完成了,
尘少的一贯风格,
就是这么简单。
但是完成了不代表结束了,
下面给大家讲一下注意事项。
我试了N多台手机,
发现在某些4.4的机型,
比如基于Android4.4的阿里云OS上,
从MainActivity跳到NewActivity,
NewActivity进行右滑的时候,
看到的不是MainActivity,
而是手机桌面。
最后度娘告诉我,
给MainActivity的Style设置一个属性就好了,
于是我就专门为ManiActivity单独写了个Style:
<!-- Base application theme. -->
<style name="AppTheme" parent="@android:style/Theme.Translucent.NoTitleBar">
</style>
<!-- MainActivity theme. -->
<style name="MainTheme" parent="@style/AppTheme">
<item name="android:windowIsTranslucent">false</item>
</style>
然后MainActivity单独使用这个MainTheme就解决了。
就先到这儿吧,
我注释写得挺详细,
有问题欢迎共同探讨!
最后尘少老规矩,附源码:
http://download.csdn.net/download/bamboy_/9777824
如果觉得尘少的Demo还不错的话,
可以克隆我的Git仓库,
各种酷炫效果收入囊中:
https://github.com/Bamboy120315/bamboy.git
手机扫码下载App一睹为快: