SwipeBackLayout的使用与源码分析学习

文/程序员男神

前言

这个小功能也是最近接触到,之前只知道这种交互方式,自己并没有去实现。看了一下,才发现其实挺简单的。虽然简单,但是用户在交互方面的体验得到了不少提升。接下来我们看看他的简单实用,分析下它的实现源码。


SwipeBackLayout的使用与源码分析学习_第1张图片
奥尼尔

实用场景

一个界面(Activity)通过意图跳转至下个子Activity,当子模块的代码执行完毕后想返回到上层界面,我们一般在导航栏左侧放置一个返回按钮,或者点击底部的虚拟返回按键返回。全面屏时代的热潮,让我们对于手势的操作更加便捷。SwipeBackLayout可以通过右滑的操作返回到上个操作界面。参考SwipeBackLayout的github地址。

使用步骤

1、添加依赖

compile 'me.imid.swipebacklayout.lib:library:1.1.0'

2、设置需要滑动返回Activity的Theme
首先需要在需要滑动返回的Activity的AppTheme里添加:

 true

3、在BaseActivity中初始化以及设置属性

/**
 * 描述: 基类activity
 * 作者|时间: djj on 2019/1/17 13:45
 * 博客地址: http://www.jianshu.com/u/dfbde65a03fc
 */
public abstract class BaseActivity extends SwipeBackActivity {

    private SwipeBackLayout mSwipeBackLayout;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.i(TAG, String.format("%s:onCreate", this));
        if (getLayoutId() != 0) {
            setContentView(getLayoutId());
        }
        ButterKnife.bind(this);

        // 可以调用该方法,设置是否允许滑动退出
        setSwipeBackEnable(true);
        mSwipeBackLayout = getSwipeBackLayout();
        // 设置滑动方向,可设置EDGE_LEFT, EDGE_RIGHT, EDGE_ALL, EDGE_BOTTOM
        mSwipeBackLayout.setEdgeTrackingEnabled(SwipeBackLayout.EDGE_LEFT);
        // 滑动退出的效果只能从边界滑动才有效果,如果要扩大touch的范围,可以调用这个方法
        mSwipeBackLayout.setEdgeSize(200);
    }
}

4、创建两个activity只需要继承BaseActivity即可,第一个activity添加一个按钮跳转到第二个activity,第二个activity只需要右滑就可返回第一个activity

/**
 * 描述: 主界面
 * 作者|时间: djj on 2019/2/27 13:56
 * 博客地址: http://www.jianshu.com/u/dfbde65a03fc
 */
public class MainActivity extends BaseActivity {

    @BindView(R.id.tv_show)
    TextView mTvShow;

    @Override
    protected int getLayoutId() {
        return R.layout.activity_main;
    }

    @Override
    protected void initData() {

    }

    @OnClick(R.id.tv_show)
    public void onViewClicked() {
        startActivity(Main2Activity.class);
    }
}

5、Main2Activity没有什么操作,这边省略...

源码分析

源码分析参考

你可能感兴趣的:(SwipeBackLayout的使用与源码分析学习)