android.support.v4.view.WindowInsetsCompat Java Examples
The following examples show how to use
android.support.v4.view.WindowInsetsCompat.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: ScrimInsetsFrameLayout.java From SublimeNavigationView with Apache License 2.0 | 8 votes |
public ScrimInsetsFrameLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); this.mTempRect = new Rect(); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SnvScrimInsetsFrameLayout, defStyleAttr, R.style.SnvScrimInsetsFrameLayout); this.mInsetForeground = a.getDrawable(R.styleable.SnvScrimInsetsFrameLayout_snvInsetForeground); a.recycle(); this.setWillNotDraw(true); ViewCompat.setOnApplyWindowInsetsListener(this, new android.support.v4.view.OnApplyWindowInsetsListener() { public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) { if (null == ScrimInsetsFrameLayout.this.mInsets) { ScrimInsetsFrameLayout.this.mInsets = new Rect(); } ScrimInsetsFrameLayout.this.mInsets.set(insets.getSystemWindowInsetLeft(), insets.getSystemWindowInsetTop(), insets.getSystemWindowInsetRight(), insets.getSystemWindowInsetBottom()); ScrimInsetsFrameLayout.this.setWillNotDraw(ScrimInsetsFrameLayout.this.mInsets.isEmpty() || ScrimInsetsFrameLayout.this.mInsetForeground == null); ViewCompat.postInvalidateOnAnimation(ScrimInsetsFrameLayout.this); return insets.consumeSystemWindowInsets(); } }); }
Example #2
Source File: StatusBarCompatLollipop.java From FimiX8-RE with MIT License | 6 votes |
public static void setStatusBarColor(Activity activity, int statusColor) { Window window = activity.getWindow(); window.clearFlags(NTLMConstants.FLAG_UNIDENTIFIED_9); window.addFlags(Integer.MIN_VALUE); window.setStatusBarColor(statusColor); window.getDecorView().setSystemUiVisibility(0); View mChildView = ((ViewGroup) window.findViewById(16908290)).getChildAt(0); if (mChildView != null) { ViewCompat.setOnApplyWindowInsetsListener(mChildView, new OnApplyWindowInsetsListener() { public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) { return insets; } }); ViewCompat.setFitsSystemWindows(mChildView, true); ViewCompat.requestApplyInsets(mChildView); } }
Example #3
Source File: SystemBarMetrics.java From ShaderEditor with MIT License | 6 votes |
private static void setWindowInsets(final View mainLayout, final Rect windowInsets) { ViewCompat.setOnApplyWindowInsetsListener(mainLayout, new OnApplyWindowInsetsListener() { @Override public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) { if (insets.hasSystemWindowInsets()) { int left = insets.getSystemWindowInsetLeft(); int top = insets.getSystemWindowInsetTop(); int right = insets.getSystemWindowInsetRight(); int bottom = insets.getSystemWindowInsetBottom(); mainLayout.setPadding(left, top, right, bottom); if (windowInsets != null) { windowInsets.set(left, top, right, bottom); } } return insets.consumeSystemWindowInsets(); } }); }
Example #4
Source File: ScrimInsetsFrameLayout.java From SublimeNavigationView with Apache License 2.0 | 6 votes |
public ScrimInsetsFrameLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); this.mTempRect = new Rect(); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SnvScrimInsetsFrameLayout, defStyleAttr, R.style.SnvScrimInsetsFrameLayout); this.mInsetForeground = a.getDrawable(R.styleable.SnvScrimInsetsFrameLayout_snvInsetForeground); a.recycle(); this.setWillNotDraw(true); ViewCompat.setOnApplyWindowInsetsListener(this, new android.support.v4.view.OnApplyWindowInsetsListener() { public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) { if (null == ScrimInsetsFrameLayout.this.mInsets) { ScrimInsetsFrameLayout.this.mInsets = new Rect(); } ScrimInsetsFrameLayout.this.mInsets.set(insets.getSystemWindowInsetLeft(), insets.getSystemWindowInsetTop(), insets.getSystemWindowInsetRight(), insets.getSystemWindowInsetBottom()); ScrimInsetsFrameLayout.this.setWillNotDraw(ScrimInsetsFrameLayout.this.mInsets.isEmpty() || ScrimInsetsFrameLayout.this.mInsetForeground == null); ViewCompat.postInvalidateOnAnimation(ScrimInsetsFrameLayout.this); return insets.consumeSystemWindowInsets(); } }); }
Example #5
Source File: StatusBarCompatLollipop.java From FimiX8-RE with MIT License | 6 votes |
public static void setStatusBarColorForCollapsingToolbar(Activity activity, AppBarLayout appBarLayout, CollapsingToolbarLayout collapsingToolbarLayout, Toolbar toolbar, int statusColor) { Window window = activity.getWindow(); window.clearFlags(NTLMConstants.FLAG_UNIDENTIFIED_9); window.addFlags(Integer.MIN_VALUE); window.setStatusBarColor(0); window.getDecorView().setSystemUiVisibility(0); View mChildView = ((ViewGroup) window.findViewById(16908290)).getChildAt(0); if (mChildView != null) { ViewCompat.setOnApplyWindowInsetsListener(mChildView, new OnApplyWindowInsetsListener() { public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) { return insets; } }); ViewCompat.setFitsSystemWindows(mChildView, true); ViewCompat.requestApplyInsets(mChildView); } ((View) appBarLayout.getParent()).setFitsSystemWindows(true); appBarLayout.setFitsSystemWindows(true); collapsingToolbarLayout.setFitsSystemWindows(true); collapsingToolbarLayout.getChildAt(0).setFitsSystemWindows(true); toolbar.setFitsSystemWindows(false); collapsingToolbarLayout.setStatusBarScrimColor(statusColor); }
Example #6
Source File: InsetsFrameLayout.java From scene with Apache License 2.0 | 6 votes |
public InsetsFrameLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); ViewCompat.setOnApplyWindowInsetsListener(this, new android.support.v4.view.OnApplyWindowInsetsListener() { @Override public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) { setPadding(insets.getSystemWindowInsetLeft(), insets.getSystemWindowInsetTop(), insets.getSystemWindowInsetRight(), 0); ViewCompat.postInvalidateOnAnimation(InsetsFrameLayout.this); return insets; } }); }
Example #7
Source File: StatusBarCompatLollipop.java From FimiX8-RE with MIT License | 6 votes |
public static void translucentStatusBar(Activity activity, boolean hideStatusBarBackground) { Window window = activity.getWindow(); window.addFlags(Integer.MIN_VALUE); if (hideStatusBarBackground) { window.clearFlags(NTLMConstants.FLAG_UNIDENTIFIED_9); window.setStatusBarColor(0); window.getDecorView().setSystemUiVisibility(FimiAppContext.UI_HEIGHT); } else { window.addFlags(NTLMConstants.FLAG_UNIDENTIFIED_9); window.getDecorView().setSystemUiVisibility(0); } View mChildView = ((ViewGroup) window.findViewById(16908290)).getChildAt(0); if (mChildView != null) { ViewCompat.setOnApplyWindowInsetsListener(mChildView, new OnApplyWindowInsetsListener() { public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) { return insets; } }); ViewCompat.setFitsSystemWindows(mChildView, false); ViewCompat.requestApplyInsets(mChildView); } }
Example #8
Source File: AppBarLayout.java From ticdesign with Apache License 2.0 | 5 votes |
public AppBarLayout(Context context, AttributeSet attrs) { super(context, attrs); setOrientation(VERTICAL); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.AppBarLayout, 0, R.style.Widget_Ticwear_AppBarLayout); mTargetElevation = a.getDimensionPixelSize(R.styleable.AppBarLayout_android_elevation, 0); setBackgroundDrawable(a.getDrawable(R.styleable.AppBarLayout_android_background)); if (a.hasValue(R.styleable.AppBarLayout_tic_expanded)) { setExpanded(a.getBoolean(R.styleable.AppBarLayout_tic_expanded, false)); } a.recycle(); // Use the bounds view outline provider so that we cast a shadow, even without a background setOutlineProvider(ViewOutlineProvider.BOUNDS); mListeners = new ArrayList<>(); ViewCompat.setElevation(this, mTargetElevation); ViewCompat.setOnApplyWindowInsetsListener(this, new android.support.v4.view.OnApplyWindowInsetsListener() { @Override public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) { if (isShown()) { setWindowInsets(insets); return insets.consumeSystemWindowInsets(); } else { return insets; } } }); }
Example #9
Source File: SweetSnackbar.java From SweetTips with Apache License 2.0 | 5 votes |
public SnackbarLayout(Context context, AttributeSet attrs) { super(context, attrs); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SnackbarLayout); mMaxWidth = a.getDimensionPixelSize(R.styleable.SnackbarLayout_android_maxWidth, -1); mMaxInlineActionWidth = a.getDimensionPixelSize( R.styleable.SnackbarLayout_maxActionInlineWidth, -1); if (a.hasValue(R.styleable.SnackbarLayout_elevation)) { ViewCompat.setElevation(this, a.getDimensionPixelSize( R.styleable.SnackbarLayout_elevation, 0)); } a.recycle(); setClickable(true); // Now inflate our content. We need to do this manually rather than using an <include> // in the layout since older versions of the Android do not inflate includes with // the correct Context. LayoutInflater.from(context).inflate(com.jet.sweettips.R.layout.sweet_layout_snackbar_include, this); ViewCompat.setAccessibilityLiveRegion(this, ViewCompat.ACCESSIBILITY_LIVE_REGION_POLITE); ViewCompat.setImportantForAccessibility(this, ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_YES); // Make sure that we fit system windows and have a listener to apply any insets ViewCompat.setFitsSystemWindows(this, true); ViewCompat.setOnApplyWindowInsetsListener(this, new android.support.v4.view.OnApplyWindowInsetsListener() { @Override public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) { // Copy over the bottom inset as padding so that we're displayed above the // navigation bar v.setPadding(v.getPaddingLeft(), v.getPaddingTop(), v.getPaddingRight(), insets.getSystemWindowInsetBottom()); return insets; } }); }
Example #10
Source File: Floaty.java From Floaty with Apache License 2.0 | 5 votes |
private Floaty(ViewGroup parent, View content) { if (parent == null) { throw new IllegalArgumentException("Transient bottom bar must have non-null parent"); } if (content == null) { throw new IllegalArgumentException("Transient bottom bar must have non-null content"); } targetParent = parent; context = parent.getContext(); view = (FloatyContentLayout) content; stage = Stage.of(targetParent); ViewCompat.setAccessibilityLiveRegion(stage, ViewCompat.ACCESSIBILITY_LIVE_REGION_POLITE); ViewCompat.setImportantForAccessibility(stage, ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_YES); // Make sure that we fit system windows and have a listener to apply any insets stage.setFitsSystemWindows(true); ViewCompat.setOnApplyWindowInsetsListener(stage, new android.support.v4.view.OnApplyWindowInsetsListener() { @Override public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) { // Copy over the bottom inset as padding so that we're displayed // above the navigation bar v.setPadding(v.getPaddingLeft(), v.getPaddingTop(), v.getPaddingRight(), insets.getSystemWindowInsetBottom()); return insets; } }); accessibilityManager = (AccessibilityManager) context.getSystemService(Context.ACCESSIBILITY_SERVICE); scene = new Scene(stage, view); }
Example #11
Source File: SweetSnackbar.java From SweetTips with Apache License 2.0 | 5 votes |
public SnackbarLayout(Context context, AttributeSet attrs) { super(context, attrs); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SnackbarLayout); mMaxWidth = a.getDimensionPixelSize(R.styleable.SnackbarLayout_android_maxWidth, -1); mMaxInlineActionWidth = a.getDimensionPixelSize( R.styleable.SnackbarLayout_maxActionInlineWidth, -1); if (a.hasValue(R.styleable.SnackbarLayout_elevation)) { ViewCompat.setElevation(this, a.getDimensionPixelSize( R.styleable.SnackbarLayout_elevation, 0)); } a.recycle(); setClickable(true); // Now inflate our content. We need to do this manually rather than using an <include> // in the layout since older versions of the Android do not inflate includes with // the correct Context. LayoutInflater.from(context).inflate(com.jet.sweettips.R.layout.sweet_layout_snackbar_include, this); ViewCompat.setAccessibilityLiveRegion(this, ViewCompat.ACCESSIBILITY_LIVE_REGION_POLITE); ViewCompat.setImportantForAccessibility(this, ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_YES); // Make sure that we fit system windows and have a listener to apply any insets ViewCompat.setFitsSystemWindows(this, true); ViewCompat.setOnApplyWindowInsetsListener(this, new android.support.v4.view.OnApplyWindowInsetsListener() { @Override public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) { // Copy over the bottom inset as padding so that we're displayed above the // navigation bar v.setPadding(v.getPaddingLeft(), v.getPaddingTop(), v.getPaddingRight(), insets.getSystemWindowInsetBottom()); return insets; } }); }
Example #12
Source File: InsetsToolbar.java From GankGirl with GNU Lesser General Public License v2.1 | 5 votes |
public InsetsToolbar(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); ViewCompat.setOnApplyWindowInsetsListener(this, new android.support.v4.view.OnApplyWindowInsetsListener() { @Override public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) { final int l = insets.getSystemWindowInsetLeft(); final int t = insets.getSystemWindowInsetTop(); final int r = insets.getSystemWindowInsetRight(); setPadding(l, t, r, 0); return insets.consumeSystemWindowInsets(); } }); }
Example #13
Source File: WindowInsetsCompatUtil.java From mr-mantou-android with GNU General Public License v3.0 | 5 votes |
@SuppressLint("RtlHardcoded") public static WindowInsetsCompat copyExcluded(WindowInsetsCompat source, int gravity) { int l = (gravity & Gravity.LEFT) == Gravity.LEFT ? 0 : source.getSystemWindowInsetLeft(); int t = (gravity & Gravity.TOP) == Gravity.TOP ? 0 : source.getSystemWindowInsetTop(); int r = (gravity & Gravity.RIGHT) == Gravity.RIGHT ? 0 : source.getSystemWindowInsetRight(); int b = (gravity & Gravity.BOTTOM) == Gravity.BOTTOM ? 0 : source.getSystemWindowInsetBottom(); return source.replaceSystemWindowInsets(l, t, r, b); }
Example #14
Source File: InsetsPercentRelativeLayout.java From Music-Player with Apache License 2.0 | 5 votes |
private void setWindowInsets(WindowInsetsCompat insets) { // Now dispatch them to our children for (int i = 0, z = getChildCount(); i < z; i++) { final View child = getChildAt(i); insets = ViewCompat.dispatchApplyWindowInsets(child, insets); if (insets.isConsumed()) { break; } } }
Example #15
Source File: BottomSheetInsetsBehavior.java From BottomSheetCoordinatorLayout with Apache License 2.0 | 5 votes |
@NonNull @Override public WindowInsetsCompat onApplyWindowInsets(CoordinatorLayout coordinatorLayout, V child, WindowInsetsCompat insets) { // Steal the inset and dispatch to view. ViewCompat.dispatchApplyWindowInsets(child, insets); // Pass unconsumed insets. return super.onApplyWindowInsets(coordinatorLayout, child, insets); }
Example #16
Source File: InsetsPercentRelativeLayout.java From Music-Player with Apache License 2.0 | 5 votes |
public InsetsPercentRelativeLayout(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); ViewCompat.setOnApplyWindowInsetsListener(this, new android.support.v4.view.OnApplyWindowInsetsListener() { @Override public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) { setWindowInsets(insets); return insets.consumeSystemWindowInsets(); } }); }
Example #17
Source File: AppBarLayout.java From ticdesign with Apache License 2.0 | 5 votes |
private void setWindowInsets(WindowInsetsCompat insets) { // Invalidate the total scroll range... mTotalScrollRange = INVALID_SCROLL_RANGE; mLastInsets = insets; // Now dispatch them to our children for (int i = 0, z = getChildCount(); i < z; i++) { final View child = getChildAt(i); insets = ViewCompat.dispatchApplyWindowInsets(child, insets); if (insets.isConsumed()) { break; } } }
Example #18
Source File: CoordinatorLayout.java From ticdesign with Apache License 2.0 | 5 votes |
private void setWindowInsets(WindowInsetsCompat insets) { if (mLastInsets != insets) { mLastInsets = insets; mDrawStatusBarBackground = insets != null && insets.getSystemWindowInsetTop() > 0; // When we needs to set window insets, onApplyWindowInsets will not been called, // so we need to update system shape here. if (insets != null) { updateSystemShape(insets.isRound()); } dispatchChildApplyWindowInsets(insets); requestLayout(); } }
Example #19
Source File: GpCollapsingToolbar.java From GpCollapsingToolbar with Apache License 2.0 | 5 votes |
private WindowInsetsCompat setWindowInsets(WindowInsetsCompat insets) { if (mLastInsets != insets) { mLastInsets = insets; requestLayout(); } return insets.consumeSystemWindowInsets(); }
Example #20
Source File: CoordinatorLayout.java From ticdesign with Apache License 2.0 | 5 votes |
private void dispatchChildApplyWindowInsets(WindowInsetsCompat insets) { if (insets.isConsumed()) { return; } for (int i = 0, z = getChildCount(); i < z; i++) { final View child = getChildAt(i); if (ViewCompat.getFitsSystemWindows(child)) { final LayoutParams lp = (LayoutParams) child.getLayoutParams(); final Behavior b = lp.getBehavior(); if (b != null) { // If the view has a behavior, let it try first insets = b.onApplyWindowInsets(this, child, insets); if (insets.isConsumed()) { // If it consumed the insets, break break; } } // Now let the view try and consume them insets = ViewCompat.dispatchApplyWindowInsets(child, insets); if (insets.isConsumed()) { break; } } } }
Example #21
Source File: CollapsingToolbarLayout.java From ticdesign with Apache License 2.0 | 4 votes |
public CollapsingToolbarLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); mCollapsingTextHelper = new CollapsingTextHelper(this); mCollapsingTextHelper.setTextSizeInterpolator(AnimationUtils.DECELERATE_INTERPOLATOR); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CollapsingToolbarLayout, defStyleAttr, R.style.Widget_Ticwear_CollapsingToolbar); mCollapsingTextHelper.setExpandedTextGravity( a.getInt(R.styleable.CollapsingToolbarLayout_tic_expandedTitleGravity, GravityCompat.START | Gravity.BOTTOM)); mCollapsingTextHelper.setCollapsedTextGravity( a.getInt(R.styleable.CollapsingToolbarLayout_tic_collapsedTitleGravity, GravityCompat.START | Gravity.CENTER_VERTICAL)); mExpandedMarginStart = mExpandedMarginTop = mExpandedMarginEnd = mExpandedMarginBottom = a.getDimensionPixelSize(R.styleable.CollapsingToolbarLayout_tic_expandedTitleMargin, 0); if (a.hasValue(R.styleable.CollapsingToolbarLayout_tic_expandedTitleMarginStart)) { mExpandedMarginStart = a.getDimensionPixelSize( R.styleable.CollapsingToolbarLayout_tic_expandedTitleMarginStart, 0); } if (a.hasValue(R.styleable.CollapsingToolbarLayout_tic_expandedTitleMarginEnd)) { mExpandedMarginEnd = a.getDimensionPixelSize( R.styleable.CollapsingToolbarLayout_tic_expandedTitleMarginEnd, 0); } if (a.hasValue(R.styleable.CollapsingToolbarLayout_tic_expandedTitleMarginTop)) { mExpandedMarginTop = a.getDimensionPixelSize( R.styleable.CollapsingToolbarLayout_tic_expandedTitleMarginTop, 0); } if (a.hasValue(R.styleable.CollapsingToolbarLayout_tic_expandedTitleMarginBottom)) { mExpandedMarginBottom = a.getDimensionPixelSize( R.styleable.CollapsingToolbarLayout_tic_expandedTitleMarginBottom, 0); } mCollapsingTitleEnabled = a.getBoolean( R.styleable.CollapsingToolbarLayout_tic_titleEnabled, true); setTitle(a.getText(R.styleable.CollapsingToolbarLayout_android_title)); // First load the default text appearances mCollapsingTextHelper.setExpandedTextAppearance( R.style.TextAppearance_Ticwear_CollapsingToolbar_Expanded); mCollapsingTextHelper.setCollapsedTextAppearance( R.style.TextAppearance_Ticwear_TitleBar_Title); // Now overlay any custom text appearances if (a.hasValue(R.styleable.CollapsingToolbarLayout_tic_expandedTitleTextAppearance)) { mCollapsingTextHelper.setExpandedTextAppearance( a.getResourceId( R.styleable.CollapsingToolbarLayout_tic_expandedTitleTextAppearance, 0)); } if (a.hasValue(R.styleable.CollapsingToolbarLayout_tic_collapsedTitleTextAppearance)) { mCollapsingTextHelper.setCollapsedTextAppearance( a.getResourceId( R.styleable.CollapsingToolbarLayout_tic_collapsedTitleTextAppearance, 0)); } setContentScrim(a.getDrawable(R.styleable.CollapsingToolbarLayout_tic_contentScrim)); setStatusBarScrim(a.getDrawable(R.styleable.CollapsingToolbarLayout_tic_statusBarScrim)); mToolbarId = a.getResourceId(R.styleable.CollapsingToolbarLayout_tic_toolbarId, -1); a.recycle(); setWillNotDraw(false); ViewCompat.setOnApplyWindowInsetsListener(this, new android.support.v4.view.OnApplyWindowInsetsListener() { @Override public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) { if (isShown()) { mLastInsets = insets; requestLayout(); return insets.consumeSystemWindowInsets(); } else { return insets; } } }); }
Example #22
Source File: CoordinatorLayout.java From ticdesign with Apache License 2.0 | 4 votes |
@Override public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) { setWindowInsets(insets); return insets.consumeSystemWindowInsets(); }
Example #23
Source File: DirectionalViewpager.java From fangzhuishushenqi with Apache License 2.0 | 4 votes |
void initViewPager() { setWillNotDraw(false); setDescendantFocusability(FOCUS_AFTER_DESCENDANTS); setFocusable(true); final Context context = getContext(); mScroller = new Scroller(context, sInterpolator); final ViewConfiguration configuration = ViewConfiguration.get(context); final float density = context.getResources().getDisplayMetrics().density; mTouchSlop = ViewConfigurationCompat.getScaledPagingTouchSlop(configuration); mMinimumVelocity = (int) (MIN_FLING_VELOCITY * density); mMaximumVelocity = configuration.getScaledMaximumFlingVelocity(); mLeftEdge = new EdgeEffectCompat(context); mRightEdge = new EdgeEffectCompat(context); mTopEdge = new EdgeEffectCompat(context); mBottomEdge = new EdgeEffectCompat(context); mFlingDistance = (int) (MIN_DISTANCE_FOR_FLING * density); mCloseEnough = (int) (CLOSE_ENOUGH * density); mDefaultGutterSize = (int) (DEFAULT_GUTTER_SIZE * density); ViewCompat.setAccessibilityDelegate(this, new MyAccessibilityDelegate()); if (ViewCompat.getImportantForAccessibility(this) == ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_AUTO) { ViewCompat.setImportantForAccessibility(this, ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_YES); } ViewCompat.setOnApplyWindowInsetsListener(this, new android.support.v4.view.OnApplyWindowInsetsListener() { private final Rect mTempRect = new Rect(); @Override public WindowInsetsCompat onApplyWindowInsets(final View v, final WindowInsetsCompat originalInsets) { // First let the ViewPager itself try and consume them... final WindowInsetsCompat applied = ViewCompat.onApplyWindowInsets(v, originalInsets); if (applied.isConsumed()) { // If the ViewPager consumed all insets, return now return applied; } // Now we'll manually dispatch the insets to our children. Since ViewPager // children are always full-height, we do not want to use the standard // ViewGroup dispatchApplyWindowInsets since if child 0 consumes them, // the rest of the children will not receive any insets. To workaround this // we manually dispatch the applied insets, not allowing children to // consume them from each other. We do however keep track of any insets // which are consumed, returning the union of our children's consumption final Rect res = mTempRect; res.left = applied.getSystemWindowInsetLeft(); res.top = applied.getSystemWindowInsetTop(); res.right = applied.getSystemWindowInsetRight(); res.bottom = applied.getSystemWindowInsetBottom(); for (int i = 0, count = getChildCount(); i < count; i++) { final WindowInsetsCompat childInsets = ViewCompat .dispatchApplyWindowInsets(getChildAt(i), applied); // Now keep track of any consumed by tracking each dimension's min // value res.left = Math.min(childInsets.getSystemWindowInsetLeft(), res.left); res.top = Math.min(childInsets.getSystemWindowInsetTop(), res.top); res.right = Math.min(childInsets.getSystemWindowInsetRight(), res.right); res.bottom = Math.min(childInsets.getSystemWindowInsetBottom(), res.bottom); } // Now return a new WindowInsets, using the consumed window insets return applied.replaceSystemWindowInsets( res.left, res.top, res.right, res.bottom); } }); }
Example #24
Source File: DirectionalViewpager.java From BookReader with Apache License 2.0 | 4 votes |
void initViewPager() { setWillNotDraw(false); setDescendantFocusability(FOCUS_AFTER_DESCENDANTS); setFocusable(true); final Context context = getContext(); mScroller = new Scroller(context, sInterpolator); final ViewConfiguration configuration = ViewConfiguration.get(context); final float density = context.getResources().getDisplayMetrics().density; mTouchSlop = ViewConfigurationCompat.getScaledPagingTouchSlop(configuration); mMinimumVelocity = (int) (MIN_FLING_VELOCITY * density); mMaximumVelocity = configuration.getScaledMaximumFlingVelocity(); mLeftEdge = new EdgeEffectCompat(context); mRightEdge = new EdgeEffectCompat(context); mTopEdge = new EdgeEffectCompat(context); mBottomEdge = new EdgeEffectCompat(context); mFlingDistance = (int) (MIN_DISTANCE_FOR_FLING * density); mCloseEnough = (int) (CLOSE_ENOUGH * density); mDefaultGutterSize = (int) (DEFAULT_GUTTER_SIZE * density); ViewCompat.setAccessibilityDelegate(this, new MyAccessibilityDelegate()); if (ViewCompat.getImportantForAccessibility(this) == ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_AUTO) { ViewCompat.setImportantForAccessibility(this, ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_YES); } ViewCompat.setOnApplyWindowInsetsListener(this, new android.support.v4.view.OnApplyWindowInsetsListener() { private final Rect mTempRect = new Rect(); @Override public WindowInsetsCompat onApplyWindowInsets(final View v, final WindowInsetsCompat originalInsets) { // First let the ViewPager itself try and consume them... final WindowInsetsCompat applied = ViewCompat.onApplyWindowInsets(v, originalInsets); if (applied.isConsumed()) { // If the ViewPager consumed all insets, return now return applied; } // Now we'll manually dispatch the insets to our children. Since ViewPager // children are always full-height, we do not want to use the standard // ViewGroup dispatchApplyWindowInsets since if child 0 consumes them, // the rest of the children will not receive any insets. To workaround this // we manually dispatch the applied insets, not allowing children to // consume them from each other. We do however keep track of any insets // which are consumed, returning the union of our children's consumption final Rect res = mTempRect; res.left = applied.getSystemWindowInsetLeft(); res.top = applied.getSystemWindowInsetTop(); res.right = applied.getSystemWindowInsetRight(); res.bottom = applied.getSystemWindowInsetBottom(); for (int i = 0, count = getChildCount(); i < count; i++) { final WindowInsetsCompat childInsets = ViewCompat .dispatchApplyWindowInsets(getChildAt(i), applied); // Now keep track of any consumed by tracking each dimension's min // value res.left = Math.min(childInsets.getSystemWindowInsetLeft(), res.left); res.top = Math.min(childInsets.getSystemWindowInsetTop(), res.top); res.right = Math.min(childInsets.getSystemWindowInsetRight(), res.right); res.bottom = Math.min(childInsets.getSystemWindowInsetBottom(), res.bottom); } // Now return a new WindowInsets, using the consumed window insets return applied.replaceSystemWindowInsets( res.left, res.top, res.right, res.bottom); } }); }
Example #25
Source File: WindowInsetsCompatUtil.java From mr-mantou-android with GNU General Public License v3.0 | 4 votes |
public static WindowInsetsCompat copy(WindowInsetsCompat source) { return copyExcluded(source, Gravity.NO_GRAVITY); }
Example #26
Source File: InsetsScrollingViewBehavior.java From mr-mantou-android with GNU General Public License v3.0 | 4 votes |
@Override public WindowInsetsCompat onApplyWindowInsets(CoordinatorLayout layout, View child, WindowInsetsCompat insets) { return ViewCompat.onApplyWindowInsets(child, insets); }
Example #27
Source File: VerticalScrollingBehavior.java From Hillffair17 with GNU General Public License v3.0 | 4 votes |
@Override public WindowInsetsCompat onApplyWindowInsets(CoordinatorLayout coordinatorLayout, V child, WindowInsetsCompat insets) { return super.onApplyWindowInsets(coordinatorLayout, child, insets); }
Example #28
Source File: YViewPager.java From YViewPagerDemo with Apache License 2.0 | 4 votes |
void initViewPager() { setWillNotDraw(false); setDescendantFocusability(FOCUS_AFTER_DESCENDANTS); setFocusable(true); final Context context = getContext(); mScroller = new Scroller(context, sInterpolator); final ViewConfiguration configuration = ViewConfiguration.get(context); final float density = context.getResources().getDisplayMetrics().density; mTouchSlop = configuration.getScaledPagingTouchSlop(); mMinimumVelocity = (int) (MIN_FLING_VELOCITY * density); mMaximumVelocity = configuration.getScaledMaximumFlingVelocity(); mLeftEdge = new EdgeEffectCompat(context); mRightEdge = new EdgeEffectCompat(context); mTopEdge = new EdgeEffectCompat(context); mBottomEdge = new EdgeEffectCompat(context); mFlingDistance = (int) (MIN_DISTANCE_FOR_FLING * density); mCloseEnough = (int) (CLOSE_ENOUGH * density); mDefaultGutterSize = (int) (DEFAULT_GUTTER_SIZE * density); ViewCompat.setAccessibilityDelegate(this, new YViewPager.MyAccessibilityDelegate()); if (ViewCompat.getImportantForAccessibility(this) == ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_AUTO) { ViewCompat.setImportantForAccessibility(this, ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_YES); } ViewCompat.setOnApplyWindowInsetsListener(this, new android.support.v4.view.OnApplyWindowInsetsListener() { private final Rect mTempRect = new Rect(); @Override public WindowInsetsCompat onApplyWindowInsets(final View v, final WindowInsetsCompat originalInsets) { // First let the ViewPager itself try and consume them... final WindowInsetsCompat applied = ViewCompat.onApplyWindowInsets(v, originalInsets); if (applied.isConsumed()) { // If the ViewPager consumed all insets, return now return applied; } // Now we'll manually dispatch the insets to our children. Since ViewPager // children are always full-height, we do not want to use the standard // ViewGroup dispatchApplyWindowInsets since if child 0 consumes them, // the rest of the children will not receive any insets. To workaround this // we manually dispatch the applied insets, not allowing children to // consume them from each other. We do however keep track of any insets // which are consumed, returning the union of our children's consumption final Rect res = mTempRect; res.left = applied.getSystemWindowInsetLeft(); res.top = applied.getSystemWindowInsetTop(); res.right = applied.getSystemWindowInsetRight(); res.bottom = applied.getSystemWindowInsetBottom(); for (int i = 0, count = getChildCount(); i < count; i++) { final WindowInsetsCompat childInsets = ViewCompat .dispatchApplyWindowInsets(getChildAt(i), applied); // Now keep track of any consumed by tracking each dimension's min // value res.left = Math.min(childInsets.getSystemWindowInsetLeft(), res.left); res.top = Math.min(childInsets.getSystemWindowInsetTop(), res.top); res.right = Math.min(childInsets.getSystemWindowInsetRight(), res.right); res.bottom = Math.min(childInsets.getSystemWindowInsetBottom(), res.bottom); } // Now return a new WindowInsets, using the consumed window insets return applied.replaceSystemWindowInsets( res.left, res.top, res.right, res.bottom); } }); }
Example #29
Source File: StretchingLayout.java From ticdesign with Apache License 2.0 | 4 votes |
public StretchingLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); mCollapsingTextHelper = new CollapsingTextHelper(this); mCollapsingTextHelper.setTextSizeInterpolator(AnimationUtils.DECELERATE_INTERPOLATOR); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CollapsingToolbarLayout, defStyleAttr, R.style.Widget_Ticwear_CollapsingToolbar); mCollapsingTextHelper.setExpandedTextGravity( a.getInt(R.styleable.CollapsingToolbarLayout_tic_expandedTitleGravity, GravityCompat.START | Gravity.BOTTOM)); mCollapsingTextHelper.setCollapsedTextGravity( a.getInt(R.styleable.CollapsingToolbarLayout_tic_collapsedTitleGravity, GravityCompat.START | Gravity.CENTER_VERTICAL)); mExpandedMarginStart = mExpandedMarginTop = mExpandedMarginEnd = mExpandedMarginBottom = a.getDimensionPixelSize(R.styleable.CollapsingToolbarLayout_tic_expandedTitleMargin, 0); if (a.hasValue(R.styleable.CollapsingToolbarLayout_tic_expandedTitleMarginStart)) { mExpandedMarginStart = a.getDimensionPixelSize( R.styleable.CollapsingToolbarLayout_tic_expandedTitleMarginStart, 0); } if (a.hasValue(R.styleable.CollapsingToolbarLayout_tic_expandedTitleMarginEnd)) { mExpandedMarginEnd = a.getDimensionPixelSize( R.styleable.CollapsingToolbarLayout_tic_expandedTitleMarginEnd, 0); } if (a.hasValue(R.styleable.CollapsingToolbarLayout_tic_expandedTitleMarginTop)) { mExpandedMarginTop = a.getDimensionPixelSize( R.styleable.CollapsingToolbarLayout_tic_expandedTitleMarginTop, 0); } if (a.hasValue(R.styleable.CollapsingToolbarLayout_tic_expandedTitleMarginBottom)) { mExpandedMarginBottom = a.getDimensionPixelSize( R.styleable.CollapsingToolbarLayout_tic_expandedTitleMarginBottom, 0); } mCollapsingTitleEnabled = a.getBoolean( R.styleable.CollapsingToolbarLayout_tic_titleEnabled, true); setTitle(a.getText(R.styleable.CollapsingToolbarLayout_android_title)); // First load the default text appearances mCollapsingTextHelper.setExpandedTextAppearance( R.style.TextAppearance_Ticwear_CollapsingToolbar_Expanded); mCollapsingTextHelper.setCollapsedTextAppearance( R.style.TextAppearance_Ticwear_TitleBar_Title); // Now overlay any custom text appearances if (a.hasValue(R.styleable.CollapsingToolbarLayout_tic_expandedTitleTextAppearance)) { mCollapsingTextHelper.setExpandedTextAppearance( a.getResourceId( R.styleable.CollapsingToolbarLayout_tic_expandedTitleTextAppearance, 0)); } if (a.hasValue(R.styleable.CollapsingToolbarLayout_tic_collapsedTitleTextAppearance)) { mCollapsingTextHelper.setCollapsedTextAppearance( a.getResourceId( R.styleable.CollapsingToolbarLayout_tic_collapsedTitleTextAppearance, 0)); } a.recycle(); setWillNotDraw(false); ViewCompat.setOnApplyWindowInsetsListener(this, new android.support.v4.view.OnApplyWindowInsetsListener() { @Override public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) { if (isShown()) { mLastInsets = insets; requestLayout(); return insets.consumeSystemWindowInsets(); } else { return insets; } } }); }
Example #30
Source File: CoolViewPager.java From CoolViewPager with Apache License 2.0 | 4 votes |
void initViewPager() { setWillNotDraw(false); setDescendantFocusability(FOCUS_AFTER_DESCENDANTS); setFocusable(true); final Context context = getContext(); mScroller = new Scroller(context, sInterpolator); final ViewConfiguration configuration = ViewConfiguration.get(context); final float density = context.getResources().getDisplayMetrics().density; mTouchSlop = configuration.getScaledPagingTouchSlop(); mMinimumVelocity = (int) (MIN_FLING_VELOCITY * density); mMaximumVelocity = configuration.getScaledMaximumFlingVelocity(); mLeftEdge = new EdgeEffect(context); mRightEdge = new EdgeEffect(context); //添加顶部及底部的边缘效果 mTopEdge = new EdgeEffect(context); mBottomEdge = new EdgeEffect(context); mFlingDistance = (int) (MIN_DISTANCE_FOR_FLING * density); mCloseEnough = (int) (CLOSE_ENOUGH * density); mDefaultGutterSize = (int) (DEFAULT_GUTTER_SIZE * density); ViewCompat.setAccessibilityDelegate(this, new CoolViewPager.MyAccessibilityDelegate()); if (ViewCompat.getImportantForAccessibility(this) == ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_AUTO) { ViewCompat.setImportantForAccessibility(this, ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_YES); } ViewCompat.setOnApplyWindowInsetsListener(this, new android.support.v4.view.OnApplyWindowInsetsListener() { private final Rect mTempRect = new Rect(); @Override public WindowInsetsCompat onApplyWindowInsets(final View v, final WindowInsetsCompat originalInsets) { // First let the ViewPager itself try and consume them... final WindowInsetsCompat applied = ViewCompat.onApplyWindowInsets(v, originalInsets); if (applied.isConsumed()) { // If the ViewPager consumed all insets, return now return applied; } // Now we'll manually dispatch the insets to our children. Since ViewPager // children are always full-height, we do not want to use the standard // ViewGroup dispatchApplyWindowInsets since if child 0 consumes them, // the rest of the children will not receive any insets. To workaround this // we manually dispatch the applied insets, not allowing children to // consume them from each other. We do however keep track of any insets // which are consumed, returning the union of our children's consumption final Rect res = mTempRect; res.left = applied.getSystemWindowInsetLeft(); res.top = applied.getSystemWindowInsetTop(); res.right = applied.getSystemWindowInsetRight(); res.bottom = applied.getSystemWindowInsetBottom(); for (int i = 0, count = getChildCount(); i < count; i++) { final WindowInsetsCompat childInsets = ViewCompat .dispatchApplyWindowInsets(getChildAt(i), applied); // Now keep track of any consumed by tracking each dimension's min // value res.left = Math.min(childInsets.getSystemWindowInsetLeft(), res.left); res.top = Math.min(childInsets.getSystemWindowInsetTop(), res.top); res.right = Math.min(childInsets.getSystemWindowInsetRight(), res.right); res.bottom = Math.min(childInsets.getSystemWindowInsetBottom(), res.bottom); } // Now return a new WindowInsets, using the consumed window insets return applied.replaceSystemWindowInsets( res.left, res.top, res.right, res.bottom); } }); }