SwipeBackHelper icon indicating copy to clipboard operation
SwipeBackHelper copied to clipboard

关闭滑动后ViewPager怎么变成透明了

Open gmfbilu opened this issue 9 years ago • 2 comments

gmfbilu avatar Dec 26 '16 14:12 gmfbilu

最新代码确实存在这个问题,主要是SwipeBackPage.java这个类中的onPostCreate方法发生变化,附上我修改的代码。

package com.jude.swipbackhelper;

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 { 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() { mSwipeBackLayout.attachToActivity(mActivity); }

    public SwipeBackPage setSwipeRelateEnable(boolean enable) { slider.setEnable(enable); return this; }

    public SwipeBackPage setSwipeRelateOffset(int offset) { slider.setOffset(offset); return this; }

    /**

    • 是否可滑动【activity的onWindowFocusChanged之前】调用本方法,
    • 之后请调用{@link #setSwipeBackEnableAfteronWindowFocusChanged()} */ public SwipeBackPage setSwipeBackEnableBeforeonWindowFocusChanged(boolean enable) { if (enable) { mSwipeBackLayout.attachToActivity(mActivity); } else { mSwipeBackLayout.removeFromActivity(mActivity); } mSwipeBackLayout.setEnableGesture(enable); return this; }

    /**

    • 是否可滑动【activity的onWindowFocusChanged之后】调用本方法,
    • 之前请调用{@link #setSwipeBackEnableBeforeonWindowFocusChanged()}
    • 如果在onWindowFocusChanged之后调用{@link #setSwipeBackEnableBeforeonWindowFocusChanged()},
    • 则会使某些View如Switch的isLaidOut()函数始终为false,导致动画丢失 */ public SwipeBackPage setSwipeBackEnableAfteronWindowFocusChanged(boolean enable) { mSwipeBackLayout.setEnableGesture(enable); return this; }

    // 可滑动的范围。百分比。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(); }

}

Paul-KK avatar Dec 31 '16 06:12 Paul-KK

@gmfbilu 如何复现?

Jude95 avatar Jan 02 '17 08:01 Jude95