Skip to content

Commit 92cb1cd

Browse files
author
李洪
committed
更新README
1 parent e812cd5 commit 92cb1cd

File tree

5 files changed

+47
-19
lines changed

5 files changed

+47
-19
lines changed

CHANGELOG.md

+3-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
## 1.0.0
22

3-
4-
## 0.9.10
5-
6-
7-
## 0.9.9
3+
* 实现 `SlideBack` 项目的初版,提供了滑动返回的功能
4+
* 可设置滑动返回是否可用的能力
5+
* 可设置前一个界面是否跟随滑动而滑动
86

README.md

+35-12
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# SlideBack
22

3-
`SlideBack` 项目实现了类似 `iOS` 左侧滑动返回交互的功能,`Android` 平台做得最早的应该是微信,即使到了现在,有滑动返回功能的App也不是很多,就算有,做得极致的也比较少。
3+
[SlideBack](https://github.com/leehong2005/SlideBack) 项目实现了类似 `iOS` 左侧滑动返回交互的功能,`Android` 平台做得最早的应该是微信,即使到了现在,有滑动返回功能的App也不是很多,就算有,做得极致的也比较少。
44

55
滑动返回功能目前我已经使用在自己的项目中了,也发现了不少问题,现在坑基本都填平了,一直就想放到 GitHub 上面来,迟迟等到今天是因为我认为始终还没达到一个完美的状态。该功能的实现最开始其实也从系统提供的组件中找到了一些灵感,典型的就是 `SlidePannel`,左侧菜单, Google 原生的 Android 应用基本都有这样的交互设计。站在前人的肩膀上,经过一番设计加工,也就有了现在的实现。
66

@@ -32,6 +32,7 @@
3232
以下是效果图,就没生成 gif 动图了,关键是不知道怎么搞~~
3333

3434
![](img/img1.png)
35+
3536
*图一:运行效果截图*
3637

3738

@@ -46,7 +47,7 @@
4647

4748
框架的实现思路是通过继承的方式来实现的,虽然可能会更改使用方式的继承关系,但考虑到一般情况下,应用层都会有自己的统一的 Activity 基类,例如 `BaseActivity``ActionBarActivity` 之类的,其实修改一下这个基类的父类,就可以了。
4849

49-
这个框架,对外提供的API就一个类**`SlideBackActivity `**
50+
这个框架,对外暴露提供的API就一个类**`SlideBackActivity `**
5051

5152
以下是使用方法,看好了
5253

@@ -61,7 +62,7 @@ public class ActionBarActivity extends SlideBackActivity {
6162

6263
**重点是:这里只需要把 `ActionBarActivity` 的基类改成 `SlideBackActivity` 即可。**
6364

64-
来看一下 `MainActivity` 的用法:
65+
来看一下 sample 中的 `MainActivity` 的用法:
6566

6667
```java
6768
public class MainActivity extends ActionBarActivity {
@@ -81,12 +82,12 @@ public class MainActivity extends ActionBarActivity {
8182

8283
### 几个API说明
8384

84-
* void setSlideable(boolean) —— 设置滑动返回是否可用,`false`不可用,默认为`true`
85-
* void setPreviousActivitySlideFollow(boolean) —— 设置前一个activity的页面是否跟随滑动面一起滑动,`false`不滑动,默认为`true`
86-
* void onSlideBack() —— 滑动退出时调用的回调方法,派生类可以重写这个方法,例如可以做一些统计工作,统计关闭activity的方式,多少是滑动返回关闭的
87-
* void setShadowResource(int) —— 设置阴影的资源id,一般都是写一个shape drawable
85+
* **void setSlideable(boolean)** —— 设置滑动返回是否可用,`false`不可用,默认为`true`
86+
* **void setPreviousActivitySlideFollow(boolean)** —— 设置前一个activity的页面是否跟随滑动面一起滑动,`false`不滑动,默认为`true`
87+
* **void onSlideBack()** —— 滑动退出时调用的回调方法,派生类可以重写这个方法,例如可以做一些统计工作,统计关闭activity的方式,多少是滑动返回关闭的
88+
* **void setShadowResource(int)** —— 设置阴影的资源id,一般都是写一个shape drawable
8889

89-
>真正大家需要关心的也前这么几个,严格来说,一般都只关心关两个就足够了~~
90+
>真正大家需要关心的也前这么几个,严格来说,一般都只关心前两个就足够了~~
9091
9192
## 设计思考
9293

@@ -95,6 +96,7 @@ public class MainActivity extends ActionBarActivity {
9596
使用了继承的设计,相当于在以前的继承关系中插入了一层,大概的类图如下所示:
9697

9798
![](img/img2.png)
99+
98100
*图二:设计的框架结果,应用层的 Activity 继承自框架中的 `SlideBackActivity`*
99101

100102

@@ -106,6 +108,7 @@ SlideFrameLayout:1
106108
也就是说,PreviewView 在最下面,SlideFrameLayout 在最上在,对用户可见,当用户开始滑动时,把上面的 SlideFrameLayout 进行偏移,那么自然就看到下在的 PreviewView 了。 如下图所示:
107109

108110
![](img/img3.png)
111+
109112
*图三:`SlideFrameLayout``PreviewView` 的Z轴关系*
110113

111114
#### 显示前一个页面
@@ -160,14 +163,34 @@ SlideFrameLayout:1
160163

161164
## 缺点
162165

163-
* 转屏可能会存在问题,不过中国特色下面,一般能转屏的还真不多见,所以这个问题就不是特别突显
166+
* 转屏可能会存在问题,不过中国特色移动互联网里面,一般能转屏的还真不多见,所以这个问题就不是特别突显
164167
* 修改了继承关系,如果应用层的 BaseActivity 是继承自 `FragmentActivity``AppCompatActivity` 的话,可能会有些问题,那么也必须把 `SlideBackActivity` 的基类也改成这些类
165168

166169
## 小结
167170

168-
**尽管我努力去做到高质量,但仍然可能存在问题,如果你在使用过程中,发现了任何问题,或者用得不爽的,可以反馈给我**
171+
**尽管我努力去做到高质量,但仍然可能存在问题,如果你在使用过程中,发现了任何问题,或者用得不爽的,可以反馈给我,欢迎同仁一起探讨交流!**
169172

170173
请关注:
171174

172-
* [GitHub](https://github.com/leehong2005)
173-
* [GitHub博客](http://leehong2005.com)
175+
* [我的GitHub](https://github.com/leehong2005)
176+
* [我的GitHub博客](http://leehong2005.com)
177+
178+
(完)
179+
180+
# License
181+
182+
```
183+
Copyright 2016 LiHong Inc.
184+
185+
Licensed under the Apache License, Version 2.0 (the "License");
186+
you may not use this file except in compliance with the License.
187+
You may obtain a copy of the License at
188+
189+
http://www.apache.org/licenses/LICENSE-2.0
190+
191+
Unless required by applicable law or agreed to in writing, software
192+
distributed under the License is distributed on an "AS IS" BASIS,
193+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
194+
See the License for the specific language governing permissions and
195+
limitations under the License.
196+
```

library/src/main/java/com/megabox/android/slide/ActivityInterface.java

+5
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,10 @@
77
* @since 2016/10/28
88
*/
99
public interface ActivityInterface {
10+
/**
11+
* Set the callback for activity lifecycle
12+
*
13+
* @param callbacks callbacks
14+
*/
1015
void setActivityLifecycleCallbacks(Application.ActivityLifecycleCallbacks callbacks);
1116
}

library/src/main/java/com/megabox/android/slide/ActivityStackImpl.java library/src/main/java/com/megabox/android/slide/ActivityInterfaceImpl.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@
55
import android.os.Bundle;
66

77
/**
8+
* 这个类用来管理 activity 的栈
9+
*
810
* @author lihong
911
* @since 2016/10/28
1012
*/
11-
class ActivityStackImpl extends Activity implements ActivityInterface {
13+
class ActivityInterfaceImpl extends Activity implements ActivityInterface {
1214

1315
private Application.ActivityLifecycleCallbacks mActivityLifecycleCallbacks;
1416

library/src/main/java/com/megabox/android/slide/SlideBackActivity.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
* @author lihong
1919
* @since 2016/03/10
2020
*/
21-
public class SlideBackActivity extends ActivityStackImpl implements SlideFrameLayout.SlidingListener {
21+
public class SlideBackActivity extends ActivityInterfaceImpl implements SlideFrameLayout.SlidingListener {
2222
/**
2323
* DEBUG
2424
*/

0 commit comments

Comments
 (0)