diff options
| author | Jeff Sharkey <jsharkey@android.com> | 2013-10-01 15:32:13 -0700 |
|---|---|---|
| committer | Jeff Sharkey <jsharkey@android.com> | 2013-10-01 16:03:00 -0700 |
| commit | ee3e1603fdbbe24b0cbf3cb85c456696cf3b7941 (patch) | |
| tree | 467d523ed0b15730db64007b622442dc4faae0bd | |
| parent | 7aa7601c09ab5d87cc15a0ed9a8f511d494a4cbc (diff) | |
| download | frameworks_base-ee3e1603fdbbe24b0cbf3cb85c456696cf3b7941.zip frameworks_base-ee3e1603fdbbe24b0cbf3cb85c456696cf3b7941.tar.gz frameworks_base-ee3e1603fdbbe24b0cbf3cb85c456696cf3b7941.tar.bz2 | |
Fix animations, padding in RTL mode.
Show directory animations coming in from left-side when in RTL
language. Also fix NinePatchDrawable to correctly mirror its padding
when auto-mirrored, and fix InsetDrawable to propagate the layout
direction to the wrapped Drawable.
Bug: 10987190, 11030793
Change-Id: I1213802a07d0c4ced93438df1e6ddf5aed3df677
| -rw-r--r-- | graphics/java/android/graphics/drawable/InsetDrawable.java | 8 | ||||
| -rw-r--r-- | graphics/java/android/graphics/drawable/NinePatchDrawable.java | 24 | ||||
| -rw-r--r-- | packages/DocumentsUI/res/animator-ldrtl/dir_down.xml | 22 | ||||
| -rw-r--r-- | packages/DocumentsUI/res/animator-ldrtl/dir_up.xml | 22 | ||||
| -rw-r--r-- | packages/DocumentsUI/res/drawable-hdpi/ic_dir_shadow_am.9.png (renamed from packages/DocumentsUI/res/drawable-hdpi/ic_dir_shadow.9.png) | bin | 184 -> 184 bytes | |||
| -rw-r--r-- | packages/DocumentsUI/res/drawable-hdpi/ic_drawer_shadow_tablet_am.9.png (renamed from packages/DocumentsUI/res/drawable-hdpi/ic_drawer_shadow_tablet.9.png) | bin | 279 -> 279 bytes | |||
| -rw-r--r-- | packages/DocumentsUI/res/drawable-mdpi/ic_dir_shadow_am.9.png (renamed from packages/DocumentsUI/res/drawable-mdpi/ic_dir_shadow.9.png) | bin | 163 -> 163 bytes | |||
| -rw-r--r-- | packages/DocumentsUI/res/drawable-mdpi/ic_drawer_shadow_tablet_am.9.png (renamed from packages/DocumentsUI/res/drawable-mdpi/ic_drawer_shadow_tablet.9.png) | bin | 225 -> 225 bytes | |||
| -rw-r--r-- | packages/DocumentsUI/res/drawable-xhdpi/ic_dir_shadow_am.9.png (renamed from packages/DocumentsUI/res/drawable-xhdpi/ic_dir_shadow.9.png) | bin | 193 -> 193 bytes | |||
| -rw-r--r-- | packages/DocumentsUI/res/drawable-xhdpi/ic_drawer_shadow_tablet_am.9.png (renamed from packages/DocumentsUI/res/drawable-xhdpi/ic_drawer_shadow_tablet.9.png) | bin | 305 -> 305 bytes | |||
| -rw-r--r-- | packages/DocumentsUI/res/drawable-xxhdpi/ic_dir_shadow_am.9.png (renamed from packages/DocumentsUI/res/drawable-xxhdpi/ic_dir_shadow.9.png) | bin | 233 -> 233 bytes | |||
| -rw-r--r-- | packages/DocumentsUI/res/drawable-xxhdpi/ic_drawer_shadow_tablet_am.9.png (renamed from packages/DocumentsUI/res/drawable-xxhdpi/ic_drawer_shadow_tablet.9.png) | bin | 1225 -> 1225 bytes | |||
| -rw-r--r-- | packages/DocumentsUI/res/drawable/ic_dir_shadow.xml | 23 | ||||
| -rw-r--r-- | packages/DocumentsUI/res/drawable/ic_drawer_shadow_tablet.xml | 23 | ||||
| -rw-r--r-- | packages/DocumentsUI/src/com/android/documentsui/DirectoryView.java | 2 |
15 files changed, 116 insertions, 8 deletions
diff --git a/graphics/java/android/graphics/drawable/InsetDrawable.java b/graphics/java/android/graphics/drawable/InsetDrawable.java index e3a7e2b..8188782 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 720494b..ab34c0f 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 0000000..6c7e224 --- /dev/null +++ b/packages/DocumentsUI/res/animator-ldrtl/dir_down.xml @@ -0,0 +1,22 @@ +<!-- Copyright (C) 2013 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" + android:valueFrom="-1" + android:valueTo="0" + android:propertyName="position" + android:valueType="floatType" + android:duration="@android:integer/config_mediumAnimTime" + android:interpolator="@android:interpolator/decelerate_quad" /> 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 0000000..8e2925c --- /dev/null +++ b/packages/DocumentsUI/res/animator-ldrtl/dir_up.xml @@ -0,0 +1,22 @@ +<!-- Copyright (C) 2013 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" + android:valueFrom="0" + android:valueTo="-1" + android:propertyName="position" + android:valueType="floatType" + android:duration="@android:integer/config_mediumAnimTime" + android:interpolator="@android:interpolator/accelerate_quad" /> 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 Binary files differindex 904d525..904d525 100644 --- a/packages/DocumentsUI/res/drawable-hdpi/ic_dir_shadow.9.png +++ b/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 Binary files differindex a1bbc8b..a1bbc8b 100644 --- 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 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 Binary files differindex 068619b..068619b 100644 --- a/packages/DocumentsUI/res/drawable-mdpi/ic_dir_shadow.9.png +++ b/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 Binary files differindex fabb56e..fabb56e 100644 --- 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 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 Binary files differindex e38a868..e38a868 100644 --- a/packages/DocumentsUI/res/drawable-xhdpi/ic_dir_shadow.9.png +++ b/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 Binary files differindex 2c39a67..2c39a67 100644 --- 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 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 Binary files differindex 0b332e4..0b332e4 100644 --- a/packages/DocumentsUI/res/drawable-xxhdpi/ic_dir_shadow.9.png +++ b/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 Binary files differindex 3c95790..3c95790 100644 --- 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 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 0000000..1153e69 --- /dev/null +++ b/packages/DocumentsUI/res/drawable/ic_dir_shadow.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* + * Copyright 2013, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> + +<nine-patch xmlns:android="http://schemas.android.com/apk/res/android" + android:src="@drawable/ic_dir_shadow_am" + android:autoMirrored="true"> +</nine-patch> 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 0000000..382ebff --- /dev/null +++ b/packages/DocumentsUI/res/drawable/ic_drawer_shadow_tablet.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* + * Copyright 2013, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> + +<nine-patch xmlns:android="http://schemas.android.com/apk/res/android" + android:src="@drawable/ic_drawer_shadow_tablet_am" + android:autoMirrored="true"> +</nine-patch> diff --git a/packages/DocumentsUI/src/com/android/documentsui/DirectoryView.java b/packages/DocumentsUI/src/com/android/documentsui/DirectoryView.java index 28e2bd9..b552e5a 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); } |
