@XingdingCAO
2017-04-07T12:54:26.000000Z
字数 3706
阅读 3716
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的布局都应该设置好背景颜色,否则会是透明的。
<applicationandroid: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"?><RelativeLayoutxmlns: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;@Overrideprotected 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);//滑动位移占屏幕的百分比,超过这个间距就切换ActivitymSlidrConfig = mBuilder.build();Slidr.attach(this, mSlidrConfig);}
SlidrConfig和SlidrConfigBuilder对象,后者用来设置各种属性,然后调用build()方法返回一个SlidrConfig对象,用于传递Slidr中静态方法attach的第二个参数,第一个参数为context。SlidrConfig和SlidrConfigBuilder对象的做法,还可以直接使用一个参数的attach方法,即:仅传入context,其配置都将为默认(从左边滑动退出)。
public class AnotherActivity extends AppCompatActivity {@Overrideprotected 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类:
