Loading core/java/android/view/RoundScrollbarRenderer.java +7 −5 Original line number Original line Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint; import android.graphics.RectF; import android.graphics.RectF; import android.graphics.Rect; /** /** * Helper class for drawing round scroll bars on round Wear devices. * Helper class for drawing round scroll bars on round Wear devices. Loading Loading @@ -53,7 +54,7 @@ class RoundScrollbarRenderer { mParent = parent; mParent = parent; } } public void drawRoundScrollbars(Canvas canvas, float alpha) { public void drawRoundScrollbars(Canvas canvas, float alpha, Rect bounds) { if (alpha == 0) { if (alpha == 0) { return; return; } } Loading Loading @@ -83,10 +84,11 @@ class RoundScrollbarRenderer { // Draw the track and the scroll bar. // Draw the track and the scroll bar. mRect.set( mRect.set( 0 + thumbWidth / 2, bounds.left - thumbWidth / 2, 0 + thumbWidth / 2, bounds.top, mParent.getWidth() - thumbWidth / 2, bounds.right - thumbWidth / 2, mParent.getHeight() - thumbWidth / 2); bounds.bottom); canvas.drawArc(mRect, -SCROLLBAR_ANGLE_RANGE / 2, SCROLLBAR_ANGLE_RANGE, false, canvas.drawArc(mRect, -SCROLLBAR_ANGLE_RANGE / 2, SCROLLBAR_ANGLE_RANGE, false, mTrackPaint); mTrackPaint); canvas.drawArc(mRect, startAngle, sweepAngle, false, mThumbPaint); canvas.drawArc(mRect, startAngle, sweepAngle, false, mThumbPaint); Loading core/java/android/view/View.java +34 −1 Original line number Original line Diff line number Diff line Loading @@ -14774,6 +14774,37 @@ public class View implements Drawable.Callback, KeyEvent.Callback, } } private void getVerticalScrollBarBounds(Rect bounds) { private void getVerticalScrollBarBounds(Rect bounds) { if (mRoundScrollbarRenderer == null) { getStraightVerticalScrollBarBounds(bounds); } else { getRoundVerticalScrollBarBounds(bounds); } } private void getRoundVerticalScrollBarBounds(Rect bounds) { final int inside = (mViewFlags & SCROLLBARS_OUTSIDE_MASK) == 0 ? ~0 : 0; int verticalScrollbarPosition = mVerticalScrollbarPosition; if (verticalScrollbarPosition == SCROLLBAR_POSITION_DEFAULT) { verticalScrollbarPosition = isLayoutRtl() ? SCROLLBAR_POSITION_LEFT : SCROLLBAR_POSITION_RIGHT; } final int width = mRight - mLeft; final int height = mBottom - mTop; switch (verticalScrollbarPosition) { default: case SCROLLBAR_POSITION_RIGHT: bounds.left = mScrollX - (mUserPaddingRight & inside); break; case SCROLLBAR_POSITION_LEFT: bounds.left = mScrollX + (mUserPaddingLeft & inside); break; } bounds.top = mScrollY + (mPaddingTop & inside); bounds.right = bounds.left + width; bounds.bottom = mScrollY + height - (mUserPaddingBottom & inside); } private void getStraightVerticalScrollBarBounds(Rect bounds) { final int inside = (mViewFlags & SCROLLBARS_OUTSIDE_MASK) == 0 ? ~0 : 0; final int inside = (mViewFlags & SCROLLBARS_OUTSIDE_MASK) == 0 ? ~0 : 0; final int size = getVerticalScrollbarWidth(); final int size = getVerticalScrollbarWidth(); int verticalScrollbarPosition = mVerticalScrollbarPosition; int verticalScrollbarPosition = mVerticalScrollbarPosition; Loading Loading @@ -14852,8 +14883,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback, // Fork out the scroll bar drawing for round wearable devices. // Fork out the scroll bar drawing for round wearable devices. if (mRoundScrollbarRenderer != null) { if (mRoundScrollbarRenderer != null) { if (drawVerticalScrollBar) { if (drawVerticalScrollBar) { final Rect bounds = cache.mScrollBarBounds; getVerticalScrollBarBounds(bounds); mRoundScrollbarRenderer.drawRoundScrollbars( mRoundScrollbarRenderer.drawRoundScrollbars( canvas, (float) cache.scrollBar.getAlpha() / 255f); canvas, (float) cache.scrollBar.getAlpha() / 255f, bounds); if (invalidate) { if (invalidate) { invalidate(); invalidate(); } } Loading
core/java/android/view/RoundScrollbarRenderer.java +7 −5 Original line number Original line Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint; import android.graphics.RectF; import android.graphics.RectF; import android.graphics.Rect; /** /** * Helper class for drawing round scroll bars on round Wear devices. * Helper class for drawing round scroll bars on round Wear devices. Loading Loading @@ -53,7 +54,7 @@ class RoundScrollbarRenderer { mParent = parent; mParent = parent; } } public void drawRoundScrollbars(Canvas canvas, float alpha) { public void drawRoundScrollbars(Canvas canvas, float alpha, Rect bounds) { if (alpha == 0) { if (alpha == 0) { return; return; } } Loading Loading @@ -83,10 +84,11 @@ class RoundScrollbarRenderer { // Draw the track and the scroll bar. // Draw the track and the scroll bar. mRect.set( mRect.set( 0 + thumbWidth / 2, bounds.left - thumbWidth / 2, 0 + thumbWidth / 2, bounds.top, mParent.getWidth() - thumbWidth / 2, bounds.right - thumbWidth / 2, mParent.getHeight() - thumbWidth / 2); bounds.bottom); canvas.drawArc(mRect, -SCROLLBAR_ANGLE_RANGE / 2, SCROLLBAR_ANGLE_RANGE, false, canvas.drawArc(mRect, -SCROLLBAR_ANGLE_RANGE / 2, SCROLLBAR_ANGLE_RANGE, false, mTrackPaint); mTrackPaint); canvas.drawArc(mRect, startAngle, sweepAngle, false, mThumbPaint); canvas.drawArc(mRect, startAngle, sweepAngle, false, mThumbPaint); Loading
core/java/android/view/View.java +34 −1 Original line number Original line Diff line number Diff line Loading @@ -14774,6 +14774,37 @@ public class View implements Drawable.Callback, KeyEvent.Callback, } } private void getVerticalScrollBarBounds(Rect bounds) { private void getVerticalScrollBarBounds(Rect bounds) { if (mRoundScrollbarRenderer == null) { getStraightVerticalScrollBarBounds(bounds); } else { getRoundVerticalScrollBarBounds(bounds); } } private void getRoundVerticalScrollBarBounds(Rect bounds) { final int inside = (mViewFlags & SCROLLBARS_OUTSIDE_MASK) == 0 ? ~0 : 0; int verticalScrollbarPosition = mVerticalScrollbarPosition; if (verticalScrollbarPosition == SCROLLBAR_POSITION_DEFAULT) { verticalScrollbarPosition = isLayoutRtl() ? SCROLLBAR_POSITION_LEFT : SCROLLBAR_POSITION_RIGHT; } final int width = mRight - mLeft; final int height = mBottom - mTop; switch (verticalScrollbarPosition) { default: case SCROLLBAR_POSITION_RIGHT: bounds.left = mScrollX - (mUserPaddingRight & inside); break; case SCROLLBAR_POSITION_LEFT: bounds.left = mScrollX + (mUserPaddingLeft & inside); break; } bounds.top = mScrollY + (mPaddingTop & inside); bounds.right = bounds.left + width; bounds.bottom = mScrollY + height - (mUserPaddingBottom & inside); } private void getStraightVerticalScrollBarBounds(Rect bounds) { final int inside = (mViewFlags & SCROLLBARS_OUTSIDE_MASK) == 0 ? ~0 : 0; final int inside = (mViewFlags & SCROLLBARS_OUTSIDE_MASK) == 0 ? ~0 : 0; final int size = getVerticalScrollbarWidth(); final int size = getVerticalScrollbarWidth(); int verticalScrollbarPosition = mVerticalScrollbarPosition; int verticalScrollbarPosition = mVerticalScrollbarPosition; Loading Loading @@ -14852,8 +14883,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback, // Fork out the scroll bar drawing for round wearable devices. // Fork out the scroll bar drawing for round wearable devices. if (mRoundScrollbarRenderer != null) { if (mRoundScrollbarRenderer != null) { if (drawVerticalScrollBar) { if (drawVerticalScrollBar) { final Rect bounds = cache.mScrollBarBounds; getVerticalScrollBarBounds(bounds); mRoundScrollbarRenderer.drawRoundScrollbars( mRoundScrollbarRenderer.drawRoundScrollbars( canvas, (float) cache.scrollBar.getAlpha() / 255f); canvas, (float) cache.scrollBar.getAlpha() / 255f, bounds); if (invalidate) { if (invalidate) { invalidate(); invalidate(); } }