Android Activity滑动返回。支持微信滑动返回样式,横屏滑动返回,全屏滑动返回
强烈建议与StatusBarUtil结合着一起使用
常见问题与反馈
1.使用透明主题时,滑动返回看见了启动器
保证栈底活动的主题是不透明的。例如demo中的首个活动是SplashActivity,进入主界面后SplashActivity就销毁了,此时MainActivity就是栈底Activity,需保证MainActivity的主题不透明
2.使用非透明主题时,滑动返回结束时立即触摸界面应用程序崩溃
把该崩溃界面里比较特殊的View class添加到集合中作为「BGASwipeBackHelper.init」的第2个参数,例如地图控件。目前在库中已经添加了WebView和SurfaceView,不用再次添加这两个了
功能介绍
- 通过修改support-v4包中SlidingPaneLayout的源码来实现滑动返回布局
- 支持非透明主题滑动返回,不影响活动生命周期
- 动态设置滑动返回是否可用
- 动态设置是否仅仅跟踪左侧边缘的滑动返回
- 动态设置是否是微信滑动返回样式
- 动态设置是否显示滑动返回的阴影效果
- 支持全屏,横屏和竖屏
效果图与示例apk
| 普通滑动返回样式 | 微信滑动返回样式 |
|---|---|
| 配合滑动删除列表一起使用 | 配合RecycerView一起使用 |
|---|---|
点击下载BGASwipeBackLayoutDemo.apk或扫描下面的二维码安装
1.添加Gradle依赖
bga-swipebacklayout后面的「latestVersion」指的是左边这个下载徽章后面的「数字」,请自行替换。
依赖{
编译“ cn.bingoogolapple:bga-swipebacklayout:latestVersion @ aar '
//换成己工程里依赖的支持-V4的版本
编译 ' com.android.support:support-v4:25.2.0 '
} 2.必须在应用程序的onCreate方法中执行BGASwipeBackHelper.init来初始化滑动返回
公共 类 App 扩展 应用程序 { @Override public void onCreate(){ super 。的onCreate(); / * * *必须在应用程序的onCreate方法中执行BGASwipeBackHelper.init来初始化滑动返回 *第一个参数:应用程序上下文 *第二个参数:如果发现滑动返回后立即触摸界面时应用崩溃,请把该界面里比较特殊的View类添加到该集合中,目前在库中已经添加了WebView和SurfaceView * / BGASwipeBackHelper 。init( this, false, null); } }
3.将下面的代码拷贝到你自己的BaseActivity中,建议参考demo里的这个BaseActivity来设置界面跳转动画
公共 抽象 类 BaseActivity 扩展了 AppCompatActivity 实现的 BGASwipeBackHelper。委托 { 受保护的 BGASwipeBackHelper mSwipeBackHelper; 受保护的 工具栏 mToolbar; @Override protected void onCreate(@Nullable Bundle savedInstanceState){ // “必须在应用程序的onCreate方法中执行BGASwipeBackHelper.init来初始化滑动返回” //在super.onCreate(savedInstanceState)之前调用该方法 initSwipeBackFinish(); 超级。的onCreate(savedInstanceState); } / * * *初始化滑动返回。在super.onCreate(savedInstanceState)之前调用该方法 * / private void initSwipeBackFinish(){ mSwipeBackHelper = new BGASwipeBackHelper(this,this); // “必须在应用程序的onCreate方法中执行BGASwipeBackHelper.init来初始化滑动返回” //下面几项可以不配置,这里只是为了讲述接口用法。 //设置滑动返回是否可用。默认值为true mSwipeBackHelper。setSwipeBackEnable( true); //设置是否仅仅跟踪左侧边缘的滑动返回。默认值为true mSwipeBackHelper。setIsOnlyTrackingLeftEdge( true); //设置是否是微信滑动返回样式。默认值为true mSwipeBackHelper。setIsWeChatStyle( true); //设置阴影资源id。默认值为R.drawable.bga_sbl_shadow mSwipeBackHelper。setShadowResId( ř 。抽拉。 bga_sbl_shadow); //设置是否显示滑动返回的阴影效果。默认值为true mSwipeBackHelper 。setIsNeedShowShadow(true); //设置阴影区域的透明度是否根据滑动的距离渐变。默认值为true mSwipeBackHelper 。setIsShadowAlphaGradient(true); //设置触发释放后自动滑动返回的阈值,默认值为0.3f mSwipeBackHelper 。setSwipeBackThreshold(0.3f); //设置底部导航条是否悬浮在内容上,默认值为false mSwipeBackHelper 。setIsNavigationBarOverlap(false); } / * * *是否支持滑动返回。这里在父类中默认返回true来支持滑动返回,如果某个界面不想支持滑动返回则重写该方法返回false即可 * * @return * / @Override public boolean isSupportSwipeBack(){ return true ; } / * * *正在滑动返回 * * @参数slideOffset从0到1 * / @覆盖公共空隙onSwipeBackLayoutSlide(浮动slideOffset){ } / * * *没达到滑动返回的阈值,取消滑动返回动作,回到默认状态 * / @覆盖公共空隙onSwipeBackLayoutCancel(){ } / * * *滑动返回执行完毕,销毁当前活动 * / @覆盖公共空隙onSwipeBackLayoutExecuted(){ mSwipeBackHelper 。swipeBackward(); } @覆盖 公共 空隙 onBackPressed(){ //正在滑动返回的时候取消返回按钮事件 如果(mSwipeBackHelper 。 isSliding()){ 返回 ; } mSwipeBackHelper 。落后(); } }
4.强烈强烈强烈建议把BGASwipeBackHelper里的每个方法的注释看一遍,只看注释就好
演示中用到的第三方库
- StatusBarUtil在Android应用上设置状态栏风格的util
- BGABaseAdapter-Android在AdapterView和RecyclerView中通用的Adapter和ViewHolder.RecyclerView支持DataBinding,多种Item类型,添加Header和Footer.RecyclerView竖直方向通用分割线BGADivider,吸顶分类
- BGAProgressBar-的Android带百分比数字的水平,圆形进度条
- BGARefreshLayout-Android的多种下拉刷新效果,上拉加载更多,可配置自定义头部广告位
- BGASwipeItemLayout-Android类似iOS带弹簧效果的左右滑动控件,可作为AbsListView和RecyclerView的项目
- 谷爹的支持包
资源均来自第三方,谨慎下载,前往第三方网站下载


