Android仿IOS 仿微信 右滑关闭Activity(附源码)

7 篇文章 0 订阅
6 篇文章 0 订阅
 SDK 27,
 即Android 8.0后,
 透明主题就不可使用了,
 否则会引发Only fullscreen opaque activities can request orientation
 所以我重新设计了一种新的右滑关闭,
 不需要透明主题,
 感兴趣请移步:
 https://blog.csdn.net/bamboy_/article/details/83863260

IOS的右滑关闭效果确实好用,
Android上虽然系统没有直接支持,
但比如微信就实现了类似效果。

我当然也想实现一下,
为同学们带来比IOS更好用的右滑关闭效果,
上图:
Bamboy右滑关闭Activity

如果你先看了其他同学的效果就会发现,
我的效果相较之下有以下优点:

	1.我是连带状态栏一起同步滑动的,
	  不是界面关闭后状态栏颜色啪一下变没。
	  
	2.其他同学是必须滑动到指定距离松手才会关闭,
	  而我的则不是。
	  我的是正常滑动速度的时候,
	  无论滑动距离多小都会关闭;
	  
	  滑动慢或停止的时候,
	  大于屏幕一般就关闭,
	  小于就不关闭。
	  
	3.其他同学是边缘有一条阴影,
	  我的是黑色遮罩把下面的整个界面覆盖,
	  然后根据滑动距离与屏幕宽度比例来调整透明度。

相信也有同学会发现,
我的效果图上分成了有TitleBar和没有TitleBar两种情况,
这就是我的Demo的缺点啦,
我的之所以能够连带状态栏一起同步,
是因为我用的是完全沉浸式的设计,
所以才能保证完全同步。

但是完全沉浸式有个缺点,
就是开发的时候要控制状态栏间距,
当然,
为了弥补这个缺点,
我在Demo里附上了弥补方法:

当你的界面没有TitleBar,
那你什么都不用做,
我已经帮你兼容好了。
		
当你有TitleBar的时候,
只需要调用这个方法就好了。

// 设置TitleBar沉浸式
setImmerseTitleBar(titleBarView);

介绍完缺点,
那么下面就开始教大家怎么使用我的右滑关闭吧。

首先第一步:
将我的两个包拷到你的项目下:
Bamboy右滑关闭Activity

第二步:
把所有需要右滑关闭的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一睹为快:

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值