Skip to content
This repository has been archived by the owner on Jul 11, 2022. It is now read-only.

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
yuanhoujun committed Mar 6, 2018
2 parents a1e4cf5 + 806f7b8 commit 41acaa7
Show file tree
Hide file tree
Showing 23 changed files with 796 additions and 83 deletions.
28 changes: 27 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,11 @@ Snake
![扫描图中二维码下载](https://raw.githubusercontent.com/yuanhoujun/Android_Slide_To_Close/develop/image/demo_snapshot.jpg)

扫描上方二维码或 [直接点这里下载](https://www.pgyer.com/Wd3H)

``
## 更新日志
* [版本 **0.2.0** 更新说明](https://github.com/yuanhoujun/Android_Slide_To_Close/blob/develop/docs/update_log_0.2.0.md)
* [版本 **0.3.0** 更新说明](https://github.com/yuanhoujun/Android_Slide_To_Close/blob/develop/docs/update_log_0.3.0.md)


## 使用方法
1)添加依赖
Expand Down Expand Up @@ -91,11 +93,30 @@ public class FirstFragment extends Fragment {
```

在使用了主构造器的情况下,使用**Snake.newProxy**接口创建实例的时候需要传入构造参数,以上述代码片段为例,可以这样使用:

```
FirstFragment fragment = Snake.newProxy(FirstFragment.class, 1, 2);
```

**Snake.newProxySupport**接口同理

## 0.3.0版本后,Fragment新增继承方式集成
按照下面的对应关系,改变你的Fragment父类就可以完成滑动关闭集成:
* `android.app.Fragment` => `com.youngfeng.snake.app.Fragment`
* `android.support.v4.app.Fragment` => `com.youngfeng.snake.support.v4.app.Fragment`

## 两种集成方案的区别
集成方案|newProxy/newProxySupport|使用继承
:---:|:---:|:---:
侵入性|无|改变了顶级父类
难易程度|稍难一点|简单
动画处理|需要自行处理|不需要处理
实例创建|必须使用newProxy/newProxySupport创建|可以自行处理

注意:使用继承方式集成的情况下,原来的API完全可以通用。你可以选择使用Snake的API进行滑动控制,也可以使用父类中的方法进行滑动控制,这取决于你自己。甚至实例创建你依然可以交给newProxy/newProxySupport接口。

一点建议:如果你的工程有一致的编程规范,代码工整,我推荐你使用继承的方式集成。如果你的工程相对较乱,整体表现不一致,我推荐你使用newProxy/newProxySupport方式集成,灵活性更高。

## 滑动参数配置
通常情况下,完成上面的步骤,你已经可以正常使用滑动关闭功能了。可是,有些同学可能希望对滑动样式进行定制化。别担心,
**Snake**提供了两种方式对滑动参数进行配置。
Expand Down Expand Up @@ -222,6 +243,11 @@ public class BaseFragment extends Fragment implements SnakeAnimationController {

![欧阳锋工作室](https://raw.githubusercontent.com/yuanhoujun/Android_Slide_To_Close/develop/image/%E6%AC%A7%E9%98%B3%E9%94%8B%E5%B7%A5%E4%BD%9C%E5%AE%A4.jpg)

## 交流群
**QQ群**:288177681

如果你在使用过程中遇到了任何问题,欢迎加群交流。如果你想给作者支持,请点击上方star支持。

**相关文章**

* [将滑动关闭进行到底](https://www.jianshu.com/p/7cf6864c9bde)
Expand Down
6 changes: 3 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@ buildscript {
]

ext.snakeVersions = [
'snake': '0.2.0',
'snakeAnnotations': '0.2.0',
'snakeCompiler': '0.2.0'
'snake': '0.3.0',
'snakeAnnotations': '0.3.0',
'snakeCompiler': '0.3.0'
]

ext.deps = [
Expand Down
8 changes: 4 additions & 4 deletions demo/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ android {
applicationId "com.youngfeng.snake.demo"
minSdkVersion versions.minSdk
targetSdkVersion versions.compileSdk
versionCode 100
versionName "1.0.0"
versionCode 110
versionName "1.1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

Expand Down Expand Up @@ -51,8 +51,8 @@ dependencies {
api deps.butterknife
annotationProcessor deps.butterknifeCompiler

implementation 'com.youngfeng.android:snake:0.2.0'
annotationProcessor 'com.youngfeng.android:snake-compiler:0.2.0'
implementation 'com.youngfeng.android:snake:0.3.0'
annotationProcessor 'com.youngfeng.android:snake-compiler:0.3.0'

// implementation project(":snake")
// annotationProcessor project(":snake-compiler")
Expand Down
4 changes: 4 additions & 0 deletions demo/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,10 @@
android:name=".support.SupportDragFragmentContainerActivity"
android:configChanges="orientation|screenSize"
android:screenOrientation="fullUser"/>
<activity
android:name=".inherit.SupportDragFragmentContainerActivity2"
android:configChanges="orientation|screenSize"
android:screenOrientation="fullUser"/>
<activity
android:name=".mix.DragFragmentContainerMixActivity"
android:configChanges="orientation|screenSize"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.youngfeng.snake.demo.inherit;

import android.view.View;

import com.youngfeng.snake.Snake;
import com.youngfeng.snake.annotations.EnableDragToClose;
import com.youngfeng.snake.demo.R;
import com.youngfeng.snake.demo.annotations.BindView;
import com.youngfeng.snake.demo.ui.BaseSupportFragment2;

import butterknife.OnClick;

/**
* The first support fragment.
*
* @author Scott Smith 2017-12-26 14:38
*/
@EnableDragToClose()
@BindView(layoutId = R.layout.fragment_first_support)
public class FirstSupportFragment extends BaseSupportFragment2 {

@Override
protected void onInitView() {
super.onInitView();
}

@OnClick(R.id.btn_second_fragment)
public void goToSecondFragment(View view) {
push(Snake.newProxySupport(SecondSupportFragment.class));
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package com.youngfeng.snake.demo.inherit;

import android.text.Html;
import android.view.View;
import android.widget.TextView;

import com.youngfeng.snake.Snake;
import com.youngfeng.snake.annotations.EnableDragToClose;
import com.youngfeng.snake.demo.R;
import com.youngfeng.snake.demo.annotations.BindView;
import com.youngfeng.snake.demo.ui.BaseSupportFragment2;

import butterknife.OnClick;

/**
* The second support fragment.
*
* @author Scott Smith 2017-12-26 14:38
*/
@EnableDragToClose()
@BindView(layoutId = R.layout.fragment_second_support)
public class SecondSupportFragment extends BaseSupportFragment2 {
@butterknife.BindView(R.id.text_open_status) TextView mTextOpenStatus;

@Override
protected void onInitView() {
super.onInitView();
updateOpenStatus();
}

@OnClick(R.id.btn_next)
public void goToNextFragment(View view) {
ThirdSupportFragment thirdFragment = Snake.newProxySupport(ThirdSupportFragment.class);
push(thirdFragment);
}

private void updateOpenStatus() {
String status = Snake.dragToCloseEnabled(this) ? "已开启" : "已禁用";
mTextOpenStatus.setText(Html.fromHtml(getString(R.string.ph_status_of_enable_drag_to_close)
.replace("#status", status)));
}

@OnClick(R.id.btn_disable_drag_to_close)
public void disableDragToClose(View view) {
if(Snake.dragToCloseEnabled(this)) {
Snake.enableDragToClose(this, false);
updateOpenStatus();
toast("滑动关闭功能已禁用");
} else {
toast("滑动关闭功能已禁用,无需重复调用");
}
}

@OnClick(R.id.btn_enable_drag_to_close)
public void enableDragToClose(View view) {
if(!Snake.dragToCloseEnabled(this)) {
Snake.enableDragToClose(this, true);
updateOpenStatus();
toast("滑动关闭功能已开启");
} else {
toast("滑动关闭功能已开启,无需重复调用");
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.youngfeng.snake.demo.inherit;

import com.youngfeng.snake.Snake;
import com.youngfeng.snake.annotations.EnableDragToClose;
import com.youngfeng.snake.demo.ui.FragmentContainerActivity;

/**
* Support drag fragment container activity.
*
* @author Scott Smith 2017-12-26 14:37
*/
@EnableDragToClose()
public class SupportDragFragmentContainerActivity2 extends FragmentContainerActivity {

@Override
protected void onInitView() {
super.onInitView();
setToolbarVisible(false);

Snake.host(this);
supportSwitchTo(FirstSupportFragment.class);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.youngfeng.snake.demo.inherit;

import com.youngfeng.snake.annotations.EnableDragToClose;
import com.youngfeng.snake.demo.R;
import com.youngfeng.snake.demo.annotations.BindView;
import com.youngfeng.snake.demo.ui.BaseSupportFragment2;
import com.youngfeng.snake.demo.utils.Util;

import butterknife.OnClick;

/**
* The third fragment.
*
* @author Scott Smith 2017-12-24 17:03
*/
@EnableDragToClose()
@BindView(layoutId = R.layout.fragment_third_support)
public class ThirdSupportFragment extends BaseSupportFragment2 {

@OnClick(R.id.btn_star_this_repo)
public void starRepo() {
Util.openGitRepo(getActivity());
}

@OnClick(R.id.btn_follow_the_authors_article)
public void openAuthorsJianshu() {
Util.openJianshu(getActivity());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import com.youngfeng.snake.demo.activities.FirstActivity;
import com.youngfeng.snake.demo.annotations.BindView;
import com.youngfeng.snake.demo.fragments.DragFragmentContainerActivity;
import com.youngfeng.snake.demo.inherit.SupportDragFragmentContainerActivity2;
import com.youngfeng.snake.demo.mix.MixActivity;
import com.youngfeng.snake.demo.other.StarGuideActivity;
import com.youngfeng.snake.demo.other.WebBrowserActivity;
Expand Down Expand Up @@ -84,6 +85,11 @@ public void mixUse(View view) {
start(MixActivity.class);
}

@OnClick(R.id.btn_use_inherit)
public void useInherit(View view) {
start(SupportDragFragmentContainerActivity2.class);
}

@OnClick(R.id.btn_check_update)
public void checkUpdate() {
Beta.checkUpgrade();
Expand Down
30 changes: 15 additions & 15 deletions demo/src/main/java/com/youngfeng/snake/demo/ui/BaseActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ public void setContentView(View view, ViewGroup.LayoutParams params) {


public void push(@AnimatorRes int enter, @AnimatorRes int exit, @AnimatorRes int popEnter,
@AnimatorRes int popExit, @NonNull Class<? extends BaseFragment> fragment, boolean addToBackStack) {
@AnimatorRes int popExit, @NonNull Class<? extends android.app.Fragment> fragment, boolean addToBackStack) {
try {
if (fragment.getName().equals(mCurrentFragmentTag)) return;

Expand Down Expand Up @@ -218,21 +218,21 @@ public void push(@AnimatorRes int enter, @AnimatorRes int exit, @AnimatorRes int
}
}

public void push(Class<? extends BaseFragment> fragment, boolean addToBackStack) {
public void push(Class<? extends android.app.Fragment> fragment, boolean addToBackStack) {
push(R.animator.snake_slide_in_right, R.animator.snake_slide_out_left,
R.animator.snake_slide_in_left, R.animator.snake_slide_out_right, fragment, addToBackStack);
}

public void push(Class<? extends BaseFragment> fragment) {
public void push(Class<? extends android.app.Fragment> fragment) {
push(fragment, true);
}

public void switchTo(Class<? extends BaseFragment> fragment) {
public void switchTo(Class<? extends android.app.Fragment> fragment) {
push(0, 0, 0, 0, fragment, true);
}

public void push(@AnimatorRes int enter, @AnimatorRes int exit, @AnimatorRes int popEnter,
@AnimatorRes int popExit, @NonNull Fragment fragment, boolean addToBackStack) {
@AnimatorRes int popExit, @NonNull android.app.Fragment fragment, boolean addToBackStack) {
try {
if (fragment.getClass().getName().equals(mCurrentFragmentTag)) return;

Expand Down Expand Up @@ -265,17 +265,17 @@ public void push(@AnimatorRes int enter, @AnimatorRes int exit, @AnimatorRes int
}
}

public void push(BaseFragment fragment, boolean addToBackStack) {
public void push(android.app.Fragment fragment, boolean addToBackStack) {
push(R.animator.snake_slide_in_right, R.animator.snake_slide_out_left,
R.animator.snake_slide_in_left, R.animator.snake_slide_out_right, fragment, addToBackStack);
}

public void push(BaseFragment fragment) {
public void push(android.app.Fragment fragment) {
push(fragment, true);
}

public void supportPush(@AnimRes int enter, @AnimRes int exit, @AnimRes int popEnter,
@AnimRes int popExit, @NonNull Class<? extends BaseSupportFragment> fragment, boolean addToBackStack) {
@AnimRes int popExit, @NonNull Class<? extends android.support.v4.app.Fragment> fragment, boolean addToBackStack) {
try {
if (fragment.getName().equals(mCurrentFragmentTag)) return;

Expand Down Expand Up @@ -313,16 +313,16 @@ public void supportPush(@AnimRes int enter, @AnimRes int exit, @AnimRes int popE
}
}

public void supportPush(Class<? extends BaseSupportFragment> fragment, boolean addToBackStack) {
public void supportPush(Class<? extends android.support.v4.app.Fragment> fragment, boolean addToBackStack) {
supportPush(R.anim.snake_slide_in_right, R.anim.snake_slide_out_left,
R.anim.snake_slide_in_left, R.anim.snake_slide_out_right, fragment, addToBackStack);
}

public void supportPush(Class<? extends BaseSupportFragment> fragment) {
supportPush(fragment, true);
public void supportSwitchTo(android.support.v4.app.Fragment fragment) {
supportPush(0, 0, 0, 0, fragment, true);
}

public void supportSwitchTo(Class<? extends BaseSupportFragment> fragment) {
public void supportSwitchTo(Class<? extends android.support.v4.app.Fragment> fragment) {
supportPush(0, 0, 0, 0, fragment, true);
}

Expand Down Expand Up @@ -360,13 +360,13 @@ public void supportPush(@AnimRes int enter, @AnimRes int exit, @AnimRes int popE
}
}

public void supportPush(BaseSupportFragment fragment, boolean addToBackStack) {
public void supportPush(android.support.v4.app.Fragment fragment, boolean addToBackStack) {
supportPush(R.anim.snake_slide_in_right, R.anim.snake_slide_out_left,
R.anim.snake_slide_in_left, R.anim.snake_slide_out_right, fragment, addToBackStack);
}

public void supportPush(BaseFragment fragment) {
push(fragment, true);
public void supportPush(android.support.v4.app.Fragment fragment) {
supportPush(fragment, true);
}

public boolean popFragment() {
Expand Down
Loading

0 comments on commit 41acaa7

Please sign in to comment.