SwipeBackLayout
SwipeBackLayout
是一个好用的第三方库(特别是README,因为是中文T.T),代码也很简单,主要是以下几个文件:
Utils.java
SwipeBackLayout.java
ViewDragHelper.java
以及默认继承自FragmentActivity
的SwipeBackActivity
。
SwipeBackLayout
的使用依赖android-support-4.jar
,但是其使用了较高版本中的ViewDragHelper
官方类,不过方法是直接引用了一个文件。
AppCompatActivity的使用
新时代中,经历了ActionBarActivity
之后,迎来了新的AppCompatActivity
,对于继承自FragmentActivity
的SwipeBackActivity
自然是不够用,不过好在SwipeBackActivity
结构简单,只需要模仿代码中SwipeBackActivity
的写法,继承自AppCompatActivity
即可。
public class AppCompatSwipeBackActivity extends AppCompatActivity implements SwipeBackActivityBase {
private SwipeBackActivityHelper mHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mHelper = new SwipeBackActivityHelper(this);
mHelper.onActivityCreate();;
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mHelper.onPostCreate();
}
@Override
public View findViewById(int id) {
View v = super.findViewById(id);
if (v == null && mHelper != null) {
return mHelper.findViewById(id);
}
return v;
}
@Override
public SwipeBackLayout getSwipeBackLayout() {
return mHelper.getSwipeBackLayout();
}
@Override
public void setSwipeBackEnable(boolean enable) {
getSwipeBackLayout().setEnableGesture(enable);
}
@Override
public void scrollToFinishActivity() {
Utils.convertActivityToTranslucent(this);
getSwipeBackLayout().scrollToFinishActivity();
}
}
使用SwipeBackLayout
库的Activity需要在Theme中设置
<item name="android:windowIsTranslucent">true</item>
即可。
ViewDragHelper的使用
ViewDragHelper
特性
ViewDragHelper.Callback
连接了ViewDragHelper
和其需要处理的View
(其实必须是ViewGroup
)ViewDragHelper
必须通过工程静态方法ViewDragHelper.create
创建可以指定拖动方向
可以检测是否触及边缘
ViewDragHelper
不直接处理拖动的View
,而是通过callback
使其容器对View
进行操作ViewDragHelper
本质是分析OnInterceptTouchEvent
和OnTouchEvent
的MotionEvent
参数,从而改变容器中被拖动的子View
位置
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。