@XingdingCAO
2017-04-07T20:54:26.000000Z
字数 3706
阅读 3352
Android
开源库
slidr
参考:http://www.jcodecraeer.com/a/opensource/2015/0115/2317.html
http://blog.csdn.net/jiangxuqaz/article/details/47264473
Slidr
开源库,这个库是用来是附加在Activity
上,使其可以滑动退出。下面开始动手:
先贴一下地址,点这里。
首先引入开源库,很简单,打开app
目录下的build.gradle
文件在dependencies
内加入如下的一句(耐心等待下载):
compile 'com.r0adkll:slidableactivity:2.0.5'
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.1.1'
compile 'com.r0adkll:slidableactivity:2.0.5'
testCompile 'junit:junit:4.12'
}
下载完成后build project
,然后在MainActivity.java
中测试一下,成功的结果如下:
打开value/styles.xml
添加以下属性:
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
value/styles.xml
和AndroidManifest.xml
,可以看到整个application
都应用了上面添加的这两句属性,所以每个activity
的布局都应该设置好背景颜色,否则会是透明的。
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorCoolGreen</item>
<item name="colorPrimaryDark">@color/colorCoolGreen</item>
<item name="colorAccent">@color/colorPrimary</item>x
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>
</resources>
未设置背景色(背景为应用抽屉):
OhterActivity
设置白色的背景色
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_other"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimaryDark"//设置为白色
tools:context="me.zxm.learnslidr.OtherActivity">
<include layout="@layout/toolbar"/>
</RelativeLayout>
public class OtherActivity extends AppCompatActivity {
private SlidrConfig mSlidrConfig;
private SlidrConfig.Builder mBuilder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_other);
int primary = getResources().getColor(R.color.colorCoolGreen);
int secondary = getResources().getColor(R.color.colorCoolGreen);
mBuilder = new SlidrConfig.Builder().primaryColor(primary)//滑动时状态栏的渐变结束的颜色
.secondaryColor(secondary)//滑动时状态栏的渐变开始的颜色
.scrimColor(Color.BLACK)//滑动时Activity之间的颜色
.position(SlidrPosition.LEFT)//从左边滑动
.scrimStartAlpha(0.8f)//滑动开始时两个Activity之间的透明度
.scrimEndAlpha(0f)//滑动结束时两个Activity之间的透明度
.velocityThreshold(5f)//超过这个滑动速度,忽略位移限定值就切换Activity
.distanceThreshold(.35f);//滑动位移占屏幕的百分比,超过这个间距就切换Activity
mSlidrConfig = mBuilder.build();
Slidr.attach(this, mSlidrConfig);
}
SlidrConfig
和SlidrConfigBuilder
对象,后者用来设置各种属性,然后调用build()
方法返回一个SlidrConfig
对象,用于传递Slidr
中静态方法attach
的第二个参数,第一个参数为context
。SlidrConfig
和SlidrConfigBuilder
对象的做法,还可以直接使用一个参数的attach
方法,即:仅传入context
,其配置都将为默认(从左边滑动退出)。
public class AnotherActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_another);
Slidr.attach(this);
}
}
Slidr
中的静态方法attach
都会返回一个SlidrInterface
对象,其包含两个方法:lock
和unlock
用于锁定和解锁手势操作。
SlidrInterface slidrInterface = Slidr.attach(this, mSlidrConfig);
slidrInterface.unlock();
slidrInterface.lock();
activity
切换时的默认动画是从下面弹到上面,然而却是从左滑动退出,操作逻辑有点难受,所以我又查询了如何更改切换动画:在activity
的onCreate
的方法中添加如下一句:
overridePendingTransition(R.anim.abc_fade_in,0);
enterAnim
进入动画,第二个参数为exitAnim
退出动画,传入0代表不使用动画(不会覆盖slidr
的动画效果)。如果想要使用更多类型的动画,可以按下F4,自行选择。 R.java
中的anime
类: