BGASwipeBackLayout-Android
介绍:
通过修改 support-v4 包中 SlidingPaneLayout 的源码来实现滑动返回布局
运行效果:
使用说明:
强烈建议与 StatusBarUtil 结合着一起使用
常见问题与反馈
1.滑动返回时看见了 Launcher
保证栈底 Activity 的主题是不透明的。例如 demo 中的首个 Activity 是 SplashActivity,进入主界面后 SplashActivity 就销毁了,此时 MainActivity 就是栈底 Activity,需保证 MainActivity 的主题不透明
2.滑动返回不生效
必须在 Application 的 onCreate 方法中执行 BGASwipeBackManager.getInstance().init(this) 来初始化滑动返回
3.如果发现某些手机上底部出现空白区域,麻烦打印以下信息新建 Issue 反馈
android.Build.VERSION.SDK_INT
android.Build.MODEL
功能介绍
-
通过修改 support-v4 包中 SlidingPaneLayout 的源码来实现滑动返回布局
-
动态设置滑动返回是否可用
-
动态设置是否仅仅跟踪左侧边缘的滑动返回
-
动态设置是否是微信滑动返回样式
-
动态设置是否显示滑动返回的阴影效果
1.添加 Gradle 依赖
bga-swipebacklayout 后面的「latestVersion」指的是左边这个 maven-central 徽章后面的「数字」,请自行替换。
dependencies {
compile 'cn.bingoogolapple:bga-swipebacklayout:latestVersion@aar'
// 换成己工程里依赖的 support-v4 的版本
compile 'com.android.support:support-v4:25.1.0'
}
2.必须在 Application 的 onCreate 方法中执行 BGASwipeBackManager.getInstance().init(this) 来初始化滑动返回
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
// 必须在 Application 的 onCreate 方法中执行 BGASwipeBackManager.getInstance().init(this) 来初始化滑动返回
BGASwipeBackManager.getInstance().init(this);
}
}
3.为需要支持滑动返回的 Activity 设置透明主题 AppTheme.Transparent
<!-- 这里面的内容改成你自己项目里的 -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!--colorPrimaryDark对应状态栏的颜色-->
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<!--colorPrimary对应ActionBar的颜色-->
<item name="colorPrimary">@color/colorPrimary</item>
<!-- 底部导航栏的颜色 -->
<item name="android:navigationBarColor" tools:targetApi="lollipop">@color/navigationBarColor</item>
<item name="android:windowBackground">@color/windowBackground</item>
<!--colorAccent 对应EditText编辑时、RadioButton选中、CheckBox等选中时的颜色-->
<item name="colorAccent">@color/colorAccent</item>
</style>
<!-- 用于开启滑动返回功能的 Activity -->
<style name="AppTheme.Transparent">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsTranslucent">true</item>
</style>
4.将下面的代码拷贝到你自己的 BaseActivity 中,建议参考 demo 里的这个 BaseActivity 来设置界面跳转动画
public abstract class BaseActivity extends AppCompatActivity implements BGASwipeBackHelper.Delegate, View.OnClickListener {
protected BGASwipeBackHelper mSwipeBackHelper;
protected Toolbar mToolbar;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
// 「必须在 Application 的 onCreate 方法中执行 BGASwipeBackManager.getInstance().init(this) 来初始化滑动返回」
// 在 super.onCreate(savedInstanceState) 之前调用该方法
initSwipeBackFinish();
super.onCreate(savedInstanceState);
}
/**
* 初始化滑动返回。在 super.onCreate(savedInstanceState) 之前调用该方法
*/
private void initSwipeBackFinish() {
mSwipeBackHelper = new BGASwipeBackHelper(this, this);
// 「必须在 Application 的 onCreate 方法中执行 BGASwipeBackManager.getInstance().init(this) 来初始化滑动返回」
// 下面几项可以不配置,这里只是为了讲述接口用法。
// 设置滑动返回是否可用。默认值为 true
mSwipeBackHelper.setSwipeBackEnable(true);
// 设置是否仅仅跟踪左侧边缘的滑动返回。默认值为 true
mSwipeBackHelper.setIsOnlyTrackingLeftEdge(true);
// 设置是否是微信滑动返回样式。默认值为 true
mSwipeBackHelper.setIsWeChatStyle(true);
// 设置阴影资源 id。默认值为 R.drawable.bga_sbl_shadow
mSwipeBackHelper.setShadowResId(R.drawable.bga_sbl_shadow);
// 设置是否显示滑动返回的阴影效果。默认值为 true
mSwipeBackHelper.setIsNeedShowShadow(true);
// 设置阴影区域的透明度是否根据滑动的距离渐变。默认值为 true
mSwipeBackHelper.setIsShadowAlphaGradient(true);
}
/**
* 是否支持滑动返回。这里在父类中默认返回 true 来支持滑动返回,如果某个界面不想支持滑动返回则重写该方法返回 false 即可
*
* @return
*/
@Override
public boolean isSupportSwipeBack() {
return true;
}
/**
* 正在滑动返回
*
* @param slideOffset 从 0 到 1
*/
@Override
public void onSwipeBackLayoutSlide(float slideOffset) {
}
/**
* 没达到滑动返回的阈值,取消滑动返回动作,回到默认状态
*/
@Override
public void onSwipeBackLayoutCancel() {
}
/**
* 滑动返回执行完毕,销毁当前 Activity
*/
@Override
public void onSwipeBackLayoutExecuted() {
mSwipeBackHelper.swipeBackward();
}
}
5.强烈强烈强烈建议把 BGASwipeBackHelper 里的每个方法的注释看一遍,只看注释就好
demo 中用到的第三方库
-
StatusBarUtil A util for setting status bar style on Android App
-
BGAAdapter-Android 在 AdapterView 和 RecyclerView 中通用的 Adapter 和 ViewHolder。RecyclerView 支持 DataBinding 、多种 Item 类型、添加 Header 和 Footer。RecyclerView 竖直方向通用分割线 BGADivider
-
BGAProgressBar-Android 带百分比数字的水平、圆形进度条
-
BGARefreshLayout-Android 多种下拉刷新效果、上拉加载更多、可配置自定义头部广告位
-
BGASwipeItemLayout-Android 类似 iOS 带弹簧效果的左右滑动控件,可作为 AbsListView 和 RecyclerView 的 item
-
谷爹的 support 包