Slidr使用详解,Android手指滑动返回Activity

概述

我们都知道IOS系统自带手指滑动可以返回当前界面,现在我们使用Slidr可以很简单的实现这些功能,而且可以做一些个性化得定制.

Slidr使用

  • GitHub地址

  • ReadMe

1 首先清单文件配置我们将要滑动Activity的theme,或者在我们的Application节点下全局配置theme,在theme里面添加

  
        <item name="android:windowIsTranslucent">trueitem>
        
        <item name="android:windowBackground">@android:color/transparentitem>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/background_material_light">

2.在要滑动的Activity中OnCreate方法中使用,有三种方式

  Slidr.attach(this);
  Slidr.attach(this,slidrConfig);
  Slidr.attach(this,statusBarColor1,statusBarColor2);

对,就简单的一行代码就可以实现手指滑动退出当前的Activity.

  • 方式1 : 直接绑定当前的Activity,这种方式一般不适用,下面介绍,这个默认的是向左滑退出Activity
  • 方式2 : 配置一些参数config, 这个最常用
  • 方式3 : 默认的向左滑退出Activity,同时滑动时状态栏有渐变颜色,statusBarColor2是渐变开始的颜色,statusBarColor1渐变结束的颜色,滑动结束时状态栏颜色恢复系统默认的颜色,所以开始的时候我们可以设置状态栏的颜色为statusBarColor1

3.SlidrConfig的使用,可以定制化我们滑动的手势或者界面的交互等.

SlidrConfig config = new SlidrConfig.Builder()
    .primaryColor(getResources().getColor(R.color.primary)
    .secondaryColor(getResources().getColor(R.color.secondary)
    .position(SlidrPosition.LEFT|RIGHT|TOP|BOTTOM|VERTICAL|HORIZONTAL)
    .sensitivity(1f)
    .scrimColor(Color.BLACK)
    .scrimStartAlpha(0.8f)
    .scrimEndAlpha(0f)
    .velocityThreshold(2400)
    .distanceThreshold(0.25f)
    .edge(true|false)
    .edgeSize(0.18f)
    .listener(new SlidrListener(){...})
    .build();

SlidrConfig是通过builder方式来设置某项参数,其中可以全部设置,也可以单独设置某项需要定制的,下面来解释一下每一个参数的含义:

  • primaryColor : 滑动时状态栏渐变结束的颜色
  • secondaryColor : 滑动时状态栏渐变开始的颜色
  • position : 设置滑动时起始方向,可以同时设置多个,比如设置left,意思是从左向右滑
  • sensitivity : 响应的敏感度,0-1f,默认值是1f
  • scrimColor : 滑动时acitvity之间的蒙层颜色,默认是黑色
  • scrimStartAlpha : 滑动开始时Activity之间蒙层颜色的透明度,0-1f,默认值0.8f
  • scrimEndAlpha : 滑动结束时Activity之间蒙层颜色的透明度,0-1f,默认值0f
  • velocityThreshold : 滑动时移动速度阈值,超过这个值会响应滑动事件
  • distanceThreshold : 滑动时手指移动距离占屏幕百分比的阈值,超过这个值才响应事件
  • edge : boolean类型,是否设置响应事件的边界,默认是false,没有边界,滑动任何地方都有响应
  • edgeSize : 边界的大小占屏幕的百分比,0-1f ,这时要看positon的方向,比如position是left,edgeSize是0.2f,意思就是边界的大小等于距离屏幕左边界占屏幕20%的大小

Slidr应用

Slidr的使用很简单,但需要注意的是他的滑动事件是最高级的,能抢夺一切事件,这时如果我们的项目中有ViewPager或者RecyclerView,他们的滑动事件都被抢夺走了 ,如果这样使用,我们滑动时都会退出当前的Activity,如果我们要处理事件,感觉非常的麻烦,这时我们为Slidr设置config来控制他的响应事件,比如控制速度,手指滑动的距离才来响应Slidr事件,我写了两个demo,都是用edgeSize来控制的,

ViewPagerDemo效果图

配置代码

  private void initSlidr() {
        SlidrConfig config=new SlidrConfig.Builder()
                .position(SlidrPosition.LEFT)//滑动起始方向
                .edge(true)
                .edgeSize(0.18f)//距离左边界占屏幕大小的18%
                .build();
        Slidr.attach(this,config);
    }

RecyclerViewDemo效果图

配置代码

  private void initSlidr() {
        SlidrConfig config=new SlidrConfig.Builder()
                .position(SlidrPosition.TOP)//滑动起始方向
                .edge(true)
                .edgeSize(0.3f)//边界占屏幕大小30%
                .build();
        Slidr.attach(this,config);
    }

后语

Slidr的使用很简单,而且实现的效果也很棒,不影响原来Activity的生命周期,我比较喜欢,在我们的使用过程中,可以使Activity滑动退出的方向和Activity进场的方向动画设置相反的方向,这样体验也比较好,看我的gif图也做了这样的效果,同时也可以研究一下5.0之后Activity的转场动画配合Slidr使用,效果更佳,上面第二张gif图用的就是5.0之后的动画,写这篇博客也是本着推荐的态度,大家快引用到你们的项目之中吧!!

Demo源码

GitHub

你可能感兴趣的:(android)