Java Code Examples for android.support.v4.view.ViewCompat#getLayoutDirection()
The following examples show how to use
android.support.v4.view.ViewCompat#getLayoutDirection() .
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: ActionBarDrawerToggle.java From adt-leanback-support with Apache License 2.0 | 6 votes |
@Override public void draw(Canvas canvas) { copyBounds(mTmpRect); canvas.save(); // Layout direction must be obtained from the activity. final boolean isLayoutRTL = ViewCompat.getLayoutDirection( mActivity.getWindow().getDecorView()) == ViewCompat.LAYOUT_DIRECTION_RTL; final int flipRtl = isLayoutRTL ? -1 : 1; final int width = mTmpRect.width(); canvas.translate(-mOffset * width * mPosition * flipRtl, 0); // Force auto-mirroring if it's not supported by the platform. if (isLayoutRTL && !mHasMirroring) { canvas.translate(width, 0); canvas.scale(-1, 1); } super.draw(canvas); canvas.restore(); }
Example 2
Source File: ActionBarDrawerToggle.java From guideshow with MIT License | 6 votes |
@Override public void draw(Canvas canvas) { copyBounds(mTmpRect); canvas.save(); // Layout direction must be obtained from the activity. final boolean isLayoutRTL = ViewCompat.getLayoutDirection( mActivity.getWindow().getDecorView()) == ViewCompat.LAYOUT_DIRECTION_RTL; final int flipRtl = isLayoutRTL ? -1 : 1; final int width = mTmpRect.width(); canvas.translate(-mOffset * width * mPosition * flipRtl, 0); // Force auto-mirroring if it's not supported by the platform. if (isLayoutRTL && !mHasMirroring) { canvas.translate(width, 0); canvas.scale(-1, 1); } super.draw(canvas); canvas.restore(); }
Example 3
Source File: CircleView.java From APlayer with GNU General Public License v3.0 | 6 votes |
public void showHint(int color) { final int[] screenPos = new int[2]; final Rect displayFrame = new Rect(); getLocationOnScreen(screenPos); getWindowVisibleDisplayFrame(displayFrame); final Context context = getContext(); final int width = getWidth(); final int height = getHeight(); final int midy = screenPos[1] + height / 2; int referenceX = screenPos[0] + width / 2; if (ViewCompat.getLayoutDirection(this) == ViewCompat.LAYOUT_DIRECTION_LTR) { final int screenWidth = context.getResources().getDisplayMetrics().widthPixels; referenceX = screenWidth - referenceX; // mirror } Toast cheatSheet = Toast .makeText(context, String.format("#%06X", 0xFFFFFF & color), Toast.LENGTH_SHORT); if (midy < displayFrame.height()) { // Show along the top; follow action buttons cheatSheet.setGravity(Gravity.TOP | GravityCompat.END, referenceX, screenPos[1] + height - displayFrame.top); } else { // Show along the bottom center cheatSheet.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, height); } cheatSheet.show(); }
Example 4
Source File: WhatsNewAdapter.java From fdroidclient with GNU General Public License v3.0 | 6 votes |
@Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { int position = parent.getChildAdapterPosition(view); Resources resources = context.getResources(); int horizontalPadding = (int) resources.getDimension(R.dimen.whats_new__padding__app_card__horizontal); int verticalPadding = (int) resources.getDimension(R.dimen.whats_new__padding__app_card__vertical); int relativePositionInCycle = position % 5; if (position == 0) { outRect.set(horizontalPadding, verticalPadding, horizontalPadding, verticalPadding); } else if (relativePositionInCycle != 0) { // The item on the left will have both left and right padding. The item on the right // will only have padding on the right. This will allow the same amount of padding // on the left, centre, and right of the grid, rather than double the padding in the // middle (which would happen if both left and right padding was set for both items). boolean isLtr = ViewCompat.getLayoutDirection(parent) == ViewCompat.LAYOUT_DIRECTION_LTR; boolean isAtStart = relativePositionInCycle == 1 || relativePositionInCycle == 3; int paddingStart = isAtStart ? horizontalPadding : 0; int paddingLeft = isLtr ? paddingStart : horizontalPadding; int paddingRight = isLtr ? horizontalPadding : paddingStart; outRect.set(paddingLeft, 0, paddingRight, verticalPadding); } else { outRect.set(horizontalPadding, 0, horizontalPadding, verticalPadding); } }
Example 5
Source File: TranslucentDrawerLayout.java From 920-text-editor-v2 with Apache License 2.0 | 6 votes |
private Drawable resolveLeftShadow() { int layoutDirection = ViewCompat.getLayoutDirection(this); // Prefer shadows defined with start/end gravity over left and right. if (layoutDirection == ViewCompat.LAYOUT_DIRECTION_LTR) { if (mShadowStart != null) { // Correct drawable layout direction, if needed. mirror(mShadowStart, layoutDirection); return mShadowStart; } } else { if (mShadowEnd != null) { // Correct drawable layout direction, if needed. mirror(mShadowEnd, layoutDirection); return mShadowEnd; } } return mShadowLeft; }
Example 6
Source File: FlexboxLayout.java From Collection-Android with MIT License | 5 votes |
@Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { int layoutDirection = ViewCompat.getLayoutDirection(this); boolean isRtl; switch (mFlexDirection) { case FlexDirection.ROW: isRtl = layoutDirection == ViewCompat.LAYOUT_DIRECTION_RTL; layoutHorizontal(isRtl, left, top, right, bottom); break; case FlexDirection.ROW_REVERSE: isRtl = layoutDirection != ViewCompat.LAYOUT_DIRECTION_RTL; layoutHorizontal(isRtl, left, top, right, bottom); break; case FlexDirection.COLUMN: isRtl = layoutDirection == ViewCompat.LAYOUT_DIRECTION_RTL; if (mFlexWrap == FlexWrap.WRAP_REVERSE) { isRtl = !isRtl; } layoutVertical(isRtl, false, left, top, right, bottom); break; case FlexDirection.COLUMN_REVERSE: isRtl = layoutDirection == ViewCompat.LAYOUT_DIRECTION_RTL; if (mFlexWrap == FlexWrap.WRAP_REVERSE) { isRtl = !isRtl; } layoutVertical(isRtl, true, left, top, right, bottom); break; default: throw new IllegalStateException("Invalid flex direction is set: " + mFlexDirection); } }
Example 7
Source File: DayPickerGroup.java From date_picker_converter with Apache License 2.0 | 5 votes |
@Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { final ImageButton leftButton; final ImageButton rightButton; if (ViewCompat.getLayoutDirection(this) == ViewCompat.LAYOUT_DIRECTION_RTL) { leftButton = nextButton; rightButton = prevButton; } else { leftButton = prevButton; rightButton = nextButton; } final int width = right - left; final int height = bottom - top; dayPickerView.layout(0, 0, width, height); final SimpleMonthView monthView = (SimpleMonthView) dayPickerView.getChildAt(0); final int monthHeight = monthView.getMonthHeight(); final int cellWidth = monthView.getCellWidth(); final int edgePadding = monthView.getEdgePadding(); // Vertically center the previous/next buttons within the month // header, horizontally center within the day cell. final int leftDW = leftButton.getMeasuredWidth(); final int leftDH = leftButton.getMeasuredHeight(); final int leftIconTop = monthView.getPaddingTop() + (monthHeight - leftDH) / 2; final int leftIconLeft = edgePadding + (cellWidth - leftDW) / 2; leftButton.layout(leftIconLeft, leftIconTop, leftIconLeft + leftDW, leftIconTop + leftDH); final int rightDW = rightButton.getMeasuredWidth(); final int rightDH = rightButton.getMeasuredHeight(); final int rightIconTop = monthView.getPaddingTop() + (monthHeight - rightDH) / 2; final int rightIconRight = width - edgePadding - (cellWidth - rightDW) / 2 - 2; rightButton.layout(rightIconRight - rightDW, rightIconTop, rightIconRight, rightIconTop + rightDH); }
Example 8
Source File: CollapsingTextHelper.java From android-proguards with Apache License 2.0 | 5 votes |
private boolean calculateIsRtl(CharSequence text) { final boolean defaultIsRtl = ViewCompat.getLayoutDirection(mView) == ViewCompat.LAYOUT_DIRECTION_RTL; return (defaultIsRtl ? TextDirectionHeuristicsCompat.FIRSTSTRONG_RTL : TextDirectionHeuristicsCompat.FIRSTSTRONG_LTR).isRtl(text, 0, text.length()); }
Example 9
Source File: DrawerLayout.java From letv with Apache License 2.0 | 5 votes |
private Drawable resolveLeftShadow() { int layoutDirection = ViewCompat.getLayoutDirection(this); if (layoutDirection == 0) { if (this.mShadowStart != null) { mirror(this.mShadowStart, layoutDirection); return this.mShadowStart; } } else if (this.mShadowEnd != null) { mirror(this.mShadowEnd, layoutDirection); return this.mShadowEnd; } return this.mShadowLeft; }
Example 10
Source File: DiscreteSeekBar.java From FuAgoraDemoDroid with MIT License | 4 votes |
public boolean isRtl() { return (ViewCompat.getLayoutDirection(this) == LAYOUT_DIRECTION_RTL) && mMirrorForRtl; }
Example 11
Source File: RecyclerViewTV.java From AndroidTVWidget with Apache License 2.0 | 4 votes |
@Override public boolean requestChildRectangleOnScreen(View child, Rect rect, boolean immediate) { final int parentLeft = getPaddingLeft(); final int parentTop = getPaddingTop(); final int parentRight = getWidth() - getPaddingRight(); final int parentBottom = getHeight() - getPaddingBottom(); final int childLeft = child.getLeft() + rect.left; final int childTop = child.getTop() + rect.top; // final int childLeft = child.getLeft() + rect.left - child.getScrollX(); // final int childTop = child.getTop() + rect.top - child.getScrollY(); final int childRight = childLeft + rect.width(); final int childBottom = childTop + rect.height(); final int offScreenLeft = Math.min(0, childLeft - parentLeft - mSelectedItemOffsetStart); final int offScreenTop = Math.min(0, childTop - parentTop - mSelectedItemOffsetStart); final int offScreenRight = Math.max(0, childRight - parentRight + mSelectedItemOffsetEnd); final int offScreenBottom = Math.max(0, childBottom - parentBottom + mSelectedItemOffsetEnd); final boolean canScrollHorizontal = getLayoutManager().canScrollHorizontally(); final boolean canScrollVertical = getLayoutManager().canScrollVertically(); // Favor the "start" layout direction over the end when bringing one side or the other // of a large rect into view. If we decide to bring in end because start is already // visible, limit the scroll such that start won't go out of bounds. final int dx; if (canScrollHorizontal) { if (ViewCompat.getLayoutDirection(this) == ViewCompat.LAYOUT_DIRECTION_RTL) { dx = offScreenRight != 0 ? offScreenRight : Math.max(offScreenLeft, childRight - parentRight); } else { dx = offScreenLeft != 0 ? offScreenLeft : Math.min(childLeft - parentLeft, offScreenRight); } } else { dx = 0; } // Favor bringing the top into view over the bottom. If top is already visible and // we should scroll to make bottom visible, make sure top does not go out of bounds. final int dy; if (canScrollVertical) { dy = offScreenTop != 0 ? offScreenTop : Math.min(childTop - parentTop, offScreenBottom); } else { dy = 0; } if (cannotScrollForwardOrBackward(isVertical() ? dy : dx)) { offset = -1; } else { offset = isVertical() ? dy : dx; if (dx != 0 || dy != 0) { if (immediate) { scrollBy(dx, dy); } else { smoothScrollBy(dx, dy); } return true; } } // 重绘是为了选中item置顶,具体请参考getChildDrawingOrder方法 postInvalidate(); return false; }
Example 12
Source File: SlidingPaneLayout.java From adt-leanback-support with Apache License 2.0 | 4 votes |
private boolean isLayoutRtlSupport() { return ViewCompat.getLayoutDirection(this) == ViewCompat.LAYOUT_DIRECTION_RTL; }
Example 13
Source File: DrawerLayout.java From letv with Apache License 2.0 | 4 votes |
public int getDrawerLockMode(int edgeGravity) { int layoutDirection = ViewCompat.getLayoutDirection(this); switch (edgeGravity) { case 3: if (this.mLockModeLeft != 3) { return this.mLockModeLeft; } int leftLockMode = layoutDirection == 0 ? this.mLockModeStart : this.mLockModeEnd; if (leftLockMode != 3) { return leftLockMode; } break; case 5: if (this.mLockModeRight != 3) { return this.mLockModeRight; } int rightLockMode = layoutDirection == 0 ? this.mLockModeEnd : this.mLockModeStart; if (rightLockMode != 3) { return rightLockMode; } break; case GravityCompat.START /*8388611*/: if (this.mLockModeStart != 3) { return this.mLockModeStart; } int startLockMode = layoutDirection == 0 ? this.mLockModeLeft : this.mLockModeRight; if (startLockMode != 3) { return startLockMode; } break; case GravityCompat.END /*8388613*/: if (this.mLockModeEnd != 3) { return this.mLockModeEnd; } int endLockMode = layoutDirection == 0 ? this.mLockModeRight : this.mLockModeLeft; if (endLockMode != 3) { return endLockMode; } break; } return 0; }
Example 14
Source File: GpCollapsingToolbar.java From GpCollapsingToolbar with Apache License 2.0 | 4 votes |
@Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { super.onLayout(changed, left, top, right, bottom); // Update the collapsed bounds by getting it's transformed bounds. This needs to be done // before the children are offset below if (mCollapsingTitleEnabled && mDummyView != null) { // We only draw the title if the dummy view is being displayed (Toolbar removes // views if there is no space) mDrawCollapsingTitle = ViewCompat.isAttachedToWindow(mDummyView) && mDummyView.getVisibility() == VISIBLE; if (mDrawCollapsingTitle) { final boolean isRtl = ViewCompat.getLayoutDirection(this) == ViewCompat.LAYOUT_DIRECTION_RTL; // Update the collapsed bounds int bottomOffset = 0; if (mToolbarDirectChild != null && mToolbarDirectChild != this) { final LayoutParams lp = (LayoutParams) mToolbarDirectChild.getLayoutParams(); bottomOffset = lp.bottomMargin; } ViewGroupUtils.getDescendantRect(this, mDummyView, mTmpRect); mCollapsingTextHelper.setCollapsedBounds( mTmpRect.left + (isRtl ? mToolbar.getTitleMarginEnd() : mToolbar.getTitleMarginStart()), bottom + mToolbar.getTitleMarginTop() - mTmpRect.height() - bottomOffset, mTmpRect.right + (isRtl ? mToolbar.getTitleMarginStart() : mToolbar.getTitleMarginEnd()), bottom - bottomOffset - mToolbar.getTitleMarginBottom()); // Update the expanded bounds mCollapsingTextHelper.setExpandedBounds( isRtl ? mExpandedMarginEnd : mExpandedMarginStart, mTmpRect.bottom + mExpandedMarginTop, right - left - (isRtl ? mExpandedMarginStart : mExpandedMarginEnd), bottom - top - mExpandedMarginBottom); // Now recalculate using the new bounds mCollapsingTextHelper.recalculate(); } } // Update our child view offset helpers for (int i = 0, z = getChildCount(); i < z; i++) { final View child = getChildAt(i); if (mLastInsets != null && !ViewCompat.getFitsSystemWindows(child)) { final int insetTop = mLastInsets.getSystemWindowInsetTop(); if (child.getTop() < insetTop) { // If the child isn't set to fit system windows but is drawing within the inset // offset it down ViewCompat.offsetTopAndBottom(child, insetTop); } } getViewOffsetHelper(child).onViewLayout(); } // Finally, set our minimum height to enable proper AppBarLayout collapsing if (mToolbar != null) { if (mCollapsingTitleEnabled && TextUtils.isEmpty(mCollapsingTextHelper.getText())) { // If we do not currently have a title, try and grab it from the Toolbar mCollapsingTextHelper.setText(mToolbar.getTitle()); } if (mToolbarDirectChild == null || mToolbarDirectChild == this) { setMinimumHeight(getHeightWithMargins(mToolbar)); } else { setMinimumHeight(getHeightWithMargins(mToolbarDirectChild)); } } }
Example 15
Source File: FlexboxLayout.java From JD-Test with Apache License 2.0 | 4 votes |
@Override protected void onDraw(Canvas canvas) { if (mDividerDrawableVertical == null && mDividerDrawableHorizontal == null) { return; } if (mShowDividerHorizontal == SHOW_DIVIDER_NONE && mShowDividerVertical == SHOW_DIVIDER_NONE) { return; } int layoutDirection = ViewCompat.getLayoutDirection(this); boolean isRtl; boolean fromBottomToTop = false; switch (mFlexDirection) { case FLEX_DIRECTION_ROW: isRtl = layoutDirection == ViewCompat.LAYOUT_DIRECTION_RTL; if (mFlexWrap == FLEX_WRAP_WRAP_REVERSE) { fromBottomToTop = true; } drawDividersHorizontal(canvas, isRtl, fromBottomToTop); break; case FLEX_DIRECTION_ROW_REVERSE: isRtl = layoutDirection != ViewCompat.LAYOUT_DIRECTION_RTL; if (mFlexWrap == FLEX_WRAP_WRAP_REVERSE) { fromBottomToTop = true; } drawDividersHorizontal(canvas, isRtl, fromBottomToTop); break; case FLEX_DIRECTION_COLUMN: isRtl = layoutDirection == ViewCompat.LAYOUT_DIRECTION_RTL; if (mFlexWrap == FLEX_WRAP_WRAP_REVERSE) { isRtl = !isRtl; } fromBottomToTop = false; drawDividersVertical(canvas, isRtl, fromBottomToTop); break; case FLEX_DIRECTION_COLUMN_REVERSE: isRtl = layoutDirection == ViewCompat.LAYOUT_DIRECTION_RTL; if (mFlexWrap == FLEX_WRAP_WRAP_REVERSE) { isRtl = !isRtl; } fromBottomToTop = true; drawDividersVertical(canvas, isRtl, fromBottomToTop); break; } }
Example 16
Source File: FastScroller.java From TelePlus-Android with GNU General Public License v2.0 | 4 votes |
private boolean isLayoutRTL() { return ViewCompat.getLayoutDirection(mRecyclerView) == ViewCompat.LAYOUT_DIRECTION_RTL; }
Example 17
Source File: NumberProgressBar.java From FireFiles with Apache License 2.0 | 4 votes |
public boolean isLayoutRtl() { return ViewCompat.getLayoutDirection(this) == ViewCompat.LAYOUT_DIRECTION_RTL; }
Example 18
Source File: JToggle.java From jus with Apache License 2.0 | 4 votes |
@Override boolean isLayoutRtl() { return ViewCompat.getLayoutDirection(mActivity.getWindow().getDecorView()) == ViewCompat.LAYOUT_DIRECTION_RTL; }
Example 19
Source File: FlexboxLayout.java From Collection-Android with MIT License | 4 votes |
@Override protected void onDraw(Canvas canvas) { if (mDividerDrawableVertical == null && mDividerDrawableHorizontal == null) { return; } if (mShowDividerHorizontal == SHOW_DIVIDER_NONE && mShowDividerVertical == SHOW_DIVIDER_NONE) { return; } int layoutDirection = ViewCompat.getLayoutDirection(this); boolean isRtl; boolean fromBottomToTop = false; switch (mFlexDirection) { case FlexDirection.ROW: isRtl = layoutDirection == ViewCompat.LAYOUT_DIRECTION_RTL; if (mFlexWrap == FlexWrap.WRAP_REVERSE) { fromBottomToTop = true; } drawDividersHorizontal(canvas, isRtl, fromBottomToTop); break; case FlexDirection.ROW_REVERSE: isRtl = layoutDirection != ViewCompat.LAYOUT_DIRECTION_RTL; if (mFlexWrap == FlexWrap.WRAP_REVERSE) { fromBottomToTop = true; } drawDividersHorizontal(canvas, isRtl, fromBottomToTop); break; case FlexDirection.COLUMN: isRtl = layoutDirection == ViewCompat.LAYOUT_DIRECTION_RTL; if (mFlexWrap == FlexWrap.WRAP_REVERSE) { isRtl = !isRtl; } drawDividersVertical(canvas, isRtl, false); break; case FlexDirection.COLUMN_REVERSE: isRtl = layoutDirection == ViewCompat.LAYOUT_DIRECTION_RTL; if (mFlexWrap == FlexWrap.WRAP_REVERSE) { isRtl = !isRtl; } drawDividersVertical(canvas, isRtl, true); break; } }
Example 20
Source File: Utils.java From imsdk-android with MIT License | 4 votes |
static boolean isLayoutRtl(View v) { return ViewCompat.getLayoutDirection(v) == ViewCompat.LAYOUT_DIRECTION_RTL; }