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 依赖

Maven Central 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 包

代码是最好的老师,更多详细用法请查看 demo

点击下载 BGASwipeBackLayoutDemo.apk

已下载
0