diff options
Diffstat (limited to 'core/src/main/kotlin/ca/allanwang/kau/swipe/SwipeBackPage.java')
-rw-r--r-- | core/src/main/kotlin/ca/allanwang/kau/swipe/SwipeBackPage.java | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/core/src/main/kotlin/ca/allanwang/kau/swipe/SwipeBackPage.java b/core/src/main/kotlin/ca/allanwang/kau/swipe/SwipeBackPage.java new file mode 100644 index 0000000..8afb5db --- /dev/null +++ b/core/src/main/kotlin/ca/allanwang/kau/swipe/SwipeBackPage.java @@ -0,0 +1,120 @@ +package ca.allanwang.kau.swipe; + +import android.annotation.TargetApi; +import android.app.Activity; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.view.ViewGroup; + +/** + * Created by Mr.Jude on 2015/8/3. + * 每个滑动页面的管理 + */ +public class SwipeBackPage { + //仅为判断是否需要将mSwipeBackLayout注入进去 + private boolean mEnable = true; + private boolean mRelativeEnable = false; + + Activity mActivity; + SwipeBackLayout mSwipeBackLayout; + RelateSlider slider; + SwipeBackPage(Activity activity){ + this.mActivity = activity; + } + + //页面的回调用于配置滑动效果 + void onCreate(){ + mActivity.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); + mActivity.getWindow().getDecorView().setBackgroundColor(Color.TRANSPARENT); + mSwipeBackLayout = new SwipeBackLayout(mActivity); + mSwipeBackLayout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); + slider = new RelateSlider(this); + } + + void onPostCreate(){ + handleLayout(); + } + + + @TargetApi(11) + public SwipeBackPage setSwipeRelateEnable(boolean enable){ + mRelativeEnable = enable; + slider.setEnable(enable); + return this; + } + + public SwipeBackPage setSwipeRelateOffset(int offset){ + slider.setOffset(offset); + return this; + } + + //是否可滑动关闭 + public SwipeBackPage setSwipeBackEnable(boolean enable) { + mEnable = enable; + mSwipeBackLayout.setEnableGesture(enable); + handleLayout(); + return this; + } + + private void handleLayout(){ + if (mEnable||mRelativeEnable){ + mSwipeBackLayout.attachToActivity(mActivity); + }else { + mSwipeBackLayout.removeFromActivity(mActivity); + } + } + + //可滑动的范围。百分比。200表示为左边200px的屏幕 + public SwipeBackPage setSwipeEdge(int swipeEdge){ + mSwipeBackLayout.setEdgeSize(swipeEdge); + return this; + } + + //可滑动的范围。百分比。0.2表示为左边20%的屏幕 + public SwipeBackPage setSwipeEdgePercent(float swipeEdgePercent){ + mSwipeBackLayout.setEdgeSizePercent(swipeEdgePercent); + return this; + } + + //对横向滑动手势的敏感程度。0为迟钝 1为敏感 + public SwipeBackPage setSwipeSensitivity(float sensitivity){ + mSwipeBackLayout.setSensitivity(mActivity, sensitivity); + return this; + } + + //底层阴影颜色 + public SwipeBackPage setScrimColor(int color){ + mSwipeBackLayout.setScrimColor(color); + return this; + } + + //触发关闭Activity百分比 + public SwipeBackPage setClosePercent(float percent){ + mSwipeBackLayout.setScrollThreshold(percent); + return this; + } + + public SwipeBackPage setDisallowInterceptTouchEvent(boolean disallowIntercept){ + mSwipeBackLayout.setDisallowInterceptTouchEvent(disallowIntercept); + return this; + } + + public SwipeBackPage addListener(SwipeListener listener){ + mSwipeBackLayout.addSwipeListener(listener); + return this; + } + + public SwipeBackPage removeListener(SwipeListener listener){ + mSwipeBackLayout.removeSwipeListener(listener); + return this; + } + + public SwipeBackLayout getSwipeBackLayout() { + return mSwipeBackLayout; + } + + public void scrollToFinishActivity() { + mSwipeBackLayout.scrollToFinishActivity(); + } + +} |