From 7fb98b34492012aad10d1c5bcaaa4064c7a79760 Mon Sep 17 00:00:00 2001 From: Fabrice Di Meglio Date: Wed, 12 Sep 2012 20:04:04 -0700 Subject: [PATCH] Fix bug #7158772 ProgressBar / SeekBar / RatingBar drawables should be reversed when in RTL mode Change-Id: I0a9cfbc6aa6919da3198a20aae6159bd867afe87 --- core/java/android/widget/ProgressBar.java | 14 ++++++++++++-- .../res/drawable/progress_horizontal_holo_dark.xml | 2 -- .../drawable/progress_horizontal_holo_light.xml | 2 -- .../scrubber_progress_horizontal_holo_dark.xml | 2 -- .../scrubber_progress_horizontal_holo_light.xml | 2 -- 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/core/java/android/widget/ProgressBar.java b/core/java/android/widget/ProgressBar.java index b6d099565287f..b2f19539371e2 100644 --- a/core/java/android/widget/ProgressBar.java +++ b/core/java/android/widget/ProgressBar.java @@ -354,7 +354,7 @@ public class ProgressBar extends View { Shader.TileMode.REPEAT, Shader.TileMode.CLAMP); shapeDrawable.getPaint().setShader(bitmapShader); - return (clip) ? new ClipDrawable(shapeDrawable, Gravity.START, + return (clip) ? new ClipDrawable(shapeDrawable, Gravity.LEFT, ClipDrawable.HORIZONTAL) : shapeDrawable; } @@ -1037,6 +1037,11 @@ public class ProgressBar extends View { } } } + if (isLayoutRtl()) { + int tempLeft = left; + left = w - right; + right = w - tempLeft; + } mIndeterminateDrawable.setBounds(left, top, right, bottom); } @@ -1054,7 +1059,12 @@ public class ProgressBar extends View { // Translate canvas so a indeterminate circular progress bar with padding // rotates properly in its animation canvas.save(); - canvas.translate(mPaddingLeft, mPaddingTop); + if(isLayoutRtl()) { + canvas.translate(getWidth() - mPaddingRight, mPaddingTop); + canvas.scale(-1.0f, 1.0f); + } else { + canvas.translate(mPaddingLeft, mPaddingTop); + } long time = getDrawingTime(); if (mHasAnimation) { mAnimation.getTransformation(time, mTransformation); diff --git a/core/res/res/drawable/progress_horizontal_holo_dark.xml b/core/res/res/drawable/progress_horizontal_holo_dark.xml index bc1ecf37ec4ac..ff270b3cf7b9b 100644 --- a/core/res/res/drawable/progress_horizontal_holo_dark.xml +++ b/core/res/res/drawable/progress_horizontal_holo_dark.xml @@ -21,13 +21,11 @@ diff --git a/core/res/res/drawable/progress_horizontal_holo_light.xml b/core/res/res/drawable/progress_horizontal_holo_light.xml index ee9b629fdfb54..493518553e679 100644 --- a/core/res/res/drawable/progress_horizontal_holo_light.xml +++ b/core/res/res/drawable/progress_horizontal_holo_light.xml @@ -21,13 +21,11 @@ diff --git a/core/res/res/drawable/scrubber_progress_horizontal_holo_dark.xml b/core/res/res/drawable/scrubber_progress_horizontal_holo_dark.xml index 4d831910233d6..97cd5135c5be3 100644 --- a/core/res/res/drawable/scrubber_progress_horizontal_holo_dark.xml +++ b/core/res/res/drawable/scrubber_progress_horizontal_holo_dark.xml @@ -19,12 +19,10 @@ android:drawable="@android:drawable/scrubber_track_holo_dark" /> diff --git a/core/res/res/drawable/scrubber_progress_horizontal_holo_light.xml b/core/res/res/drawable/scrubber_progress_horizontal_holo_light.xml index a3461fab77874..14e19f432b7b4 100644 --- a/core/res/res/drawable/scrubber_progress_horizontal_holo_light.xml +++ b/core/res/res/drawable/scrubber_progress_horizontal_holo_light.xml @@ -19,12 +19,10 @@ android:drawable="@android:drawable/scrubber_track_holo_light" />