Snake
Android輕松實(shí)現(xiàn)類似iOS滑動(dòng)關(guān)閉功能

使用方法
在你的app module的build.gradle腳本中添加如下依賴:
compile 'me.foji.snake:Snake:0.0.2'
注意:0.0.2版本可能正在審核中,如果不能正常使用,請(qǐng)修改為0.0.1版本
注意:Activity和Fragment的使用方法有一些不一樣
Activity集成方法
第一步:
在你的基類Activity中添加如下代碼
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 僅僅使用這一句代碼,就可以開啟滑動(dòng)關(guān)閉功能
Snake.init(this).enable(openSlideToClose()).start();
}
// 推薦添加該方法,方便在子類中控制滑動(dòng)關(guān)閉功能的開啟或關(guān)閉
protected boolean openSlideToClose() {
return true;
}
@Override
protected void onDestroy() {
super.onDestroy();
// 必須調(diào)用該方法,才能正常使用
Snake.onDestroy(this);
}
}
</pre>
## 第二步:
為了保證可以看到前一個(gè)Activity視圖滑動(dòng)的效果,必須設(shè)置Activity的Window透明,這里稍微有些麻煩,但沒有想到更好的方法,如果你恰好有更好的方法,請(qǐng)F(tuán)ork這個(gè)倉庫,給我發(fā)送Pull request,不甚感激!
在你的app module的res/values/style.xml的主題中添加如下設(shè)置:
```xml
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- 這兩行設(shè)置主要是用于設(shè)置窗體透明 -->
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsTranslucent">true</item>
</style>
通過上面兩個(gè)步驟,Activity的滑動(dòng)關(guān)閉功能已經(jīng)可以正常使用了,趕緊測試一下吧!
Fragment集成方法
Fragment的集成方法相對(duì)Activity較為復(fù)雜,但依然可以使用少量的代碼即可搞定!
第一步:
一個(gè)合格的程序員應(yīng)該會(huì)給自己的Fragment設(shè)置一個(gè)基類,這里假設(shè)叫做BaseFragment,為了保證可以使用滑動(dòng)關(guān)閉功能,需要對(duì)基類對(duì)一點(diǎn)小小的修改:
1)如果你的BaseFragment是繼承自android.app.Fragment, 則將基類修改為me.foji.snake.app.Fragment, 其實(shí)它只是android.app.Fragment的一個(gè)子類而已,請(qǐng)放心使用。
2)如果你的基類的onCreateView方法中有對(duì)布局進(jìn)行了一些共同的處理,請(qǐng)將這部分代碼移至`` public View onBindView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)`方法中
3)和Activity處理方式一致,分別在Fragment的onCreate和onDestroy方法中添加如下代碼:
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 使用方式同Activity完全一樣, 記得也要在onDestory里面調(diào)用回收方法
Snake.init(this).enable(openSlideToClose()).start();
}
protected boolean openSlideToClose() {
return true;
}
@Override
public void onDestroy() {
super.onDestroy();
Snake.onDestroy(this);
}
通過上面三個(gè)步驟,F(xiàn)ragment中的集成工作也完成了,是不是很簡單?
注意事項(xiàng):
由于Snake需要依賴于FragmentManager獲取前一個(gè)Fragment,而這依賴于你對(duì)Fragment回退棧的處理。所以,為了保證Snake在Fragment中的正常使用,請(qǐng)將前一個(gè)Fragment放到回退棧中,并且設(shè)置合適的Tag名稱!
Github倉庫地址:https://github.com/yuanhoujun/Android_Slide_To_Close