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

来源:互联网 发布:淘宝网实木家具 编辑:程序博客网 时间:2024/05/21 10:28

概述

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

Slidr使用

  • GitHub地址

  • ReadMe

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

  <!--切换activity时屏幕不变暗-->        <item name="android:windowIsTranslucent">true</item>        <!--窗口的背景设置成透明 ,这样的话在我们每个界面的根布局都要设置background,要不然就是透明的-->        <item name="android:windowBackground">@android:color/transparent</item>
<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效果图

ViewPagerDemo效果图

配置代码

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

RecyclerViewDemo效果图

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

原创粉丝点击