diff --git a/graphics/java/android/graphics/drawable/InsetDrawable.java b/graphics/java/android/graphics/drawable/InsetDrawable.java index e3a7e2bfa84ea..818878254acb8 100644 --- a/graphics/java/android/graphics/drawable/InsetDrawable.java +++ b/graphics/java/android/graphics/drawable/InsetDrawable.java @@ -202,7 +202,13 @@ public class InsetDrawable extends Drawable implements Drawable.Callback public void setColorFilter(ColorFilter cf) { mInsetState.mDrawable.setColorFilter(cf); } - + + /** {@hide} */ + @Override + public void setLayoutDirection(int layoutDirection) { + mInsetState.mDrawable.setLayoutDirection(layoutDirection); + } + @Override public int getOpacity() { return mInsetState.mDrawable.getOpacity(); diff --git a/graphics/java/android/graphics/drawable/NinePatchDrawable.java b/graphics/java/android/graphics/drawable/NinePatchDrawable.java index 720494be4b7b0..ab34c0fd5649a 100644 --- a/graphics/java/android/graphics/drawable/NinePatchDrawable.java +++ b/graphics/java/android/graphics/drawable/NinePatchDrawable.java @@ -219,16 +219,15 @@ public class NinePatchDrawable extends Drawable { @Override public void draw(Canvas canvas) { final Rect bounds = getBounds(); - final boolean needMirroring = isAutoMirrored() && - getLayoutDirection() == LayoutDirection.RTL; - if (needMirroring) { + final boolean needsMirroring = needsMirroring(); + if (needsMirroring) { canvas.save(); // Mirror the 9patch canvas.translate(bounds.right - bounds.left, 0); canvas.scale(-1.0f, 1.0f); } mNinePatch.draw(canvas, bounds, mPaint); - if (needMirroring) { + if (needsMirroring) { canvas.restore(); } } @@ -240,7 +239,11 @@ public class NinePatchDrawable extends Drawable { @Override public boolean getPadding(Rect padding) { - padding.set(mPadding); + if (needsMirroring()) { + padding.set(mPadding.right, mPadding.top, mPadding.left, mPadding.bottom); + } else { + padding.set(mPadding); + } return true; } @@ -249,7 +252,12 @@ public class NinePatchDrawable extends Drawable { */ @Override public Insets getOpticalInsets() { - return mOpticalInsets; + if (needsMirroring()) { + return Insets.of(mOpticalInsets.right, mOpticalInsets.top, mOpticalInsets.right, + mOpticalInsets.bottom); + } else { + return mOpticalInsets; + } } @Override @@ -297,6 +305,10 @@ public class NinePatchDrawable extends Drawable { mNinePatchState.mAutoMirrored = mirrored; } + private boolean needsMirroring() { + return isAutoMirrored() && getLayoutDirection() == LayoutDirection.RTL; + } + @Override public boolean isAutoMirrored() { return mNinePatchState.mAutoMirrored; diff --git a/packages/DocumentsUI/res/animator-ldrtl/dir_down.xml b/packages/DocumentsUI/res/animator-ldrtl/dir_down.xml new file mode 100644 index 0000000000000..6c7e2244c7129 --- /dev/null +++ b/packages/DocumentsUI/res/animator-ldrtl/dir_down.xml @@ -0,0 +1,22 @@ + + + diff --git a/packages/DocumentsUI/res/animator-ldrtl/dir_up.xml b/packages/DocumentsUI/res/animator-ldrtl/dir_up.xml new file mode 100644 index 0000000000000..8e2925c9760dd --- /dev/null +++ b/packages/DocumentsUI/res/animator-ldrtl/dir_up.xml @@ -0,0 +1,22 @@ + + + diff --git a/packages/DocumentsUI/res/drawable-hdpi/ic_dir_shadow.9.png b/packages/DocumentsUI/res/drawable-hdpi/ic_dir_shadow_am.9.png similarity index 100% rename from packages/DocumentsUI/res/drawable-hdpi/ic_dir_shadow.9.png rename to packages/DocumentsUI/res/drawable-hdpi/ic_dir_shadow_am.9.png diff --git a/packages/DocumentsUI/res/drawable-hdpi/ic_drawer_shadow_tablet.9.png b/packages/DocumentsUI/res/drawable-hdpi/ic_drawer_shadow_tablet_am.9.png similarity index 100% rename from packages/DocumentsUI/res/drawable-hdpi/ic_drawer_shadow_tablet.9.png rename to packages/DocumentsUI/res/drawable-hdpi/ic_drawer_shadow_tablet_am.9.png diff --git a/packages/DocumentsUI/res/drawable-mdpi/ic_dir_shadow.9.png b/packages/DocumentsUI/res/drawable-mdpi/ic_dir_shadow_am.9.png similarity index 100% rename from packages/DocumentsUI/res/drawable-mdpi/ic_dir_shadow.9.png rename to packages/DocumentsUI/res/drawable-mdpi/ic_dir_shadow_am.9.png diff --git a/packages/DocumentsUI/res/drawable-mdpi/ic_drawer_shadow_tablet.9.png b/packages/DocumentsUI/res/drawable-mdpi/ic_drawer_shadow_tablet_am.9.png similarity index 100% rename from packages/DocumentsUI/res/drawable-mdpi/ic_drawer_shadow_tablet.9.png rename to packages/DocumentsUI/res/drawable-mdpi/ic_drawer_shadow_tablet_am.9.png diff --git a/packages/DocumentsUI/res/drawable-xhdpi/ic_dir_shadow.9.png b/packages/DocumentsUI/res/drawable-xhdpi/ic_dir_shadow_am.9.png similarity index 100% rename from packages/DocumentsUI/res/drawable-xhdpi/ic_dir_shadow.9.png rename to packages/DocumentsUI/res/drawable-xhdpi/ic_dir_shadow_am.9.png diff --git a/packages/DocumentsUI/res/drawable-xhdpi/ic_drawer_shadow_tablet.9.png b/packages/DocumentsUI/res/drawable-xhdpi/ic_drawer_shadow_tablet_am.9.png similarity index 100% rename from packages/DocumentsUI/res/drawable-xhdpi/ic_drawer_shadow_tablet.9.png rename to packages/DocumentsUI/res/drawable-xhdpi/ic_drawer_shadow_tablet_am.9.png diff --git a/packages/DocumentsUI/res/drawable-xxhdpi/ic_dir_shadow.9.png b/packages/DocumentsUI/res/drawable-xxhdpi/ic_dir_shadow_am.9.png similarity index 100% rename from packages/DocumentsUI/res/drawable-xxhdpi/ic_dir_shadow.9.png rename to packages/DocumentsUI/res/drawable-xxhdpi/ic_dir_shadow_am.9.png diff --git a/packages/DocumentsUI/res/drawable-xxhdpi/ic_drawer_shadow_tablet.9.png b/packages/DocumentsUI/res/drawable-xxhdpi/ic_drawer_shadow_tablet_am.9.png similarity index 100% rename from packages/DocumentsUI/res/drawable-xxhdpi/ic_drawer_shadow_tablet.9.png rename to packages/DocumentsUI/res/drawable-xxhdpi/ic_drawer_shadow_tablet_am.9.png diff --git a/packages/DocumentsUI/res/drawable/ic_dir_shadow.xml b/packages/DocumentsUI/res/drawable/ic_dir_shadow.xml new file mode 100644 index 0000000000000..1153e693f4d3b --- /dev/null +++ b/packages/DocumentsUI/res/drawable/ic_dir_shadow.xml @@ -0,0 +1,23 @@ + + + + + diff --git a/packages/DocumentsUI/res/drawable/ic_drawer_shadow_tablet.xml b/packages/DocumentsUI/res/drawable/ic_drawer_shadow_tablet.xml new file mode 100644 index 0000000000000..382ebff764aff --- /dev/null +++ b/packages/DocumentsUI/res/drawable/ic_drawer_shadow_tablet.xml @@ -0,0 +1,23 @@ + + + + + diff --git a/packages/DocumentsUI/src/com/android/documentsui/DirectoryView.java b/packages/DocumentsUI/src/com/android/documentsui/DirectoryView.java index 28e2bd90a1555..b552e5aa838ce 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/DirectoryView.java +++ b/packages/DocumentsUI/src/com/android/documentsui/DirectoryView.java @@ -40,7 +40,7 @@ public class DirectoryView extends FrameLayout { public void setBackground(Drawable background) { final Rect rect = new Rect(); background.getPadding(rect); - final InsetDrawable inset = new InsetDrawable(background, -rect.left, 0, 0, 0); + final InsetDrawable inset = new InsetDrawable(background, -rect.left, 0, -rect.right, 0); super.setBackground(inset); }