[置顶] Android 快速实现右滑退出效果
2017-08-16 11:57
204 查看
快速实现右滑退出
本人使用的是GitHub上的开源库 SwipeBack开源库地址 https://github.com/ikew0ng/SwipeBackLayout
集成右滑退出效果首先需要将库引用到我们的项目中,这里通过gradle的方式导入
compile ‘me.imid.swipebacklayout.lib:library:1.0.0’
引入项目之后,只需一步就可以简单的使用了,只要将我们需要右滑退出的Activity继承自库中的
SwipeBackActivity,就已经有右滑退出的效果了,如下图
但是我们发现滑动后出现黑屏,这个时候我们只要在Style里面设置一个属性就能够解决这个问题
<!-- 首页(第一级页面不让Activity透明) --> <style name="mainPageStyle" parent="AppTheme"> <item name="android:windowIsTranslucent">false</item> </style>
将这个Style在AndroidManifest里设置到需要使用右滑退出的Activity中
<activity android:name=".ui.activity.FileSelectActivity" android:label="@string/title_activity_fire_select" android:theme="@style/otherPageStyle">
这样我们就解决了黑屏的问题。在实际开发中,我们还会经常会用到基类,例如BaseActivity之类的,这个时候我们还想使用右滑效果,就需要在库中找到SwipeBackActvity,将类中的全部代码Copy出
public class SwipeBackActivity extends FragmentActivity implements SwipeBackActivityBase { private SwipeBackActivityHelper mHelper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mHelper = new SwipeBackActivityHelper(this); mHelper.onActivityCreate(); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); mHelper.onPostCreate(); } @Override public View findViewById(int id) { View v = super.findViewById(id); if (v == null && mHelper != null) return mHelper.findViewById(id); return v; } @Override public SwipeBackLayout getSwipeBackLayout() { return mHelper.getSwipeBackLayout(); } @Override public void setSwipeBackEnable(boolean enable) { getSwipeBackLayout().setEnableGesture(enable); } @Override public void scrollToFinishActivity() { Utils.convertActivityToTranslucent(this); getSwipeBackLayout().scrollToFinishActivity(); } }
上面就是SwipeBackActivity 的源码,我们将源码Copy到一个新类中,并且将其继承自己项目的BaseActivity即可,这样我们只要将需要效果的Ativity 继承自BaseSwipeBackActivity就能完美的使用了。
public abstract class BaseSwipeBackActivity extends BaseActivity implements SwipeBackActivityBase { private SwipeBackActivityHelper mHelper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mHelper = new SwipeBackActivityHelper(this); mHelper.onActivityCreate(); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); mHelper.onPostCreate(); } @Override public View findViewById(int id) { View v = super.findViewById(id); if (v == null && mHelper != null) return mHelper.findViewById(id); return v; } @Override public SwipeBackLayout getSwipeBackLayout() { return mHelper.getSwipeBackLayout(); } @Override public void setSwipeBackEnable(boolean enable) { getSwipeBackLayout().setEnableGesture(enable); } @Override public void scrollToFinishActivity() { Utils.convertActivityToTranslucent(this); getSwipeBackLayout().scrollToFinishActivity(); } }
这里还隐藏了一个坑,那就是 style 中的 android:windowIsTranslucent 属性不兼容activity切换动画问题,这里博主提供一个链接,希望能够帮助大家
http://blog.csdn.net/fancylovejava/article/details/39643449
相关文章推荐
- android实现类似于支付宝余额快速闪动的效果
- Android ListView标题置顶效果实现
- Android PinnedSectionListView实现滚动标题置顶/联系人列表效果
- Android中再按一次退出效果的简单实现
- Android UI效果实现——Activity滑动退出效果
- android实现类似于支付宝余额快速闪动的效果
- 【Android进阶】使用Andbase快速开发框架实现常见侧滑栏和滑动标签页组合效果
- Android毛玻璃效果的实现(本文系转载一种快速毛玻璃虚化效果实现)
- Android快速毛玻璃虚化效果实现
- android编程实现类似于支付宝余额快速闪动效果的方法
- 一种快速毛玻璃虚化效果实现--Android
- Android中ListView字母排序,实现字母挤压效果以及右侧快速选中字母,搜索关键字功能
- 【轉】Android平台一种快速毛玻璃虚化效果实现
- android开发游记:通过xml配置快速实现点击热点效果和渐变动画(不用java代码)
- android实现类似于支付宝余额快速闪动的效果
- Android 使用Toolbar+DrawerLayout快速实现仿“知乎APP”侧滑导航效果
- Android使用Andbase快速开发框架实现常见侧滑栏和滑动标签页组合效果
- [置顶] android实现防美拍点赞效果
- Android ListView标题置顶效果实现
- android退出程序 后台运行 实现退出键和home键一样的效果