最近在公司测试机中使用了小米Mix2S的右侧返回功能, 用久了觉得挺顺手,就在网上搜了一下相关的实现,没想到还真有这样的一个库, Slidr, 附上 github地址
https://github.com/r0adkll/Slidr
添加依赖
implementation 'com.r0adkll:slidableactivity:2.0.6'
使用方法很简单, 只需要在Activity的 onCreate() 方法中调用Slidr.attach(this)方法即可
public class ExampleActivity extends <Activity|FragmentActivity|ActionBarActivity> {
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_example);
int primary = getResources().getColor(R.color.primaryDark);
int secondary = getResources().getColor(R.color.secondaryDark);
Slidr.attach(this, primary, secondary);
}
}
public class ExampleActivity extends <Activity|FragmentActivity|ActionBarActivity> {
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_example);
Slidr.attach(this);
}
}
相关配置:
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) // The % of the screen that counts as the edge, default 18%
.listener(new SlidrListener(){...})
.build();
Slidr.attach(this, config);
扩展方法:
Slidr.attach(...)会返回一个SlidrInterface对象,可以使用SlidrInterface来关闭或者解除关闭右滑返回功能
SlidrInterface.lock();
SlidrInterface.unlock();
在你使用右滑删除的Activity的Theme里,必须要设置以下信息
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
给Activity设置一个background
<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">
...