summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Philip Milne <pmilne@google.com> 2012-04-18 15:09:05 -0700
committer Philip Milne <pmilne@google.com> 2012-04-18 16:06:27 -0700
commitbbd51f1e360b22eece1d74bd65c7e6a0b59dee59 (patch)
tree3919c1cfffc46790c5435ab9a02bc7c3eb604572
parentf341e5545c8ac8ccec26ec549d57d2ddee069f55 (diff)
Share Insets instances between views that have the same background (Drawable)
Change-Id: I47d93ccca6f553b678d25966d10d7a0a97cfa5ea
-rw-r--r--core/java/android/view/View.java8
-rw-r--r--graphics/java/android/graphics/Insets.java2
-rw-r--r--graphics/java/android/graphics/drawable/Drawable.java11
-rw-r--r--graphics/java/android/graphics/drawable/DrawableContainer.java9
-rw-r--r--graphics/java/android/graphics/drawable/NinePatchDrawable.java14
-rw-r--r--tests/GridLayoutTest/src/com/android/test/layout/LayoutInsetsTest.java7
6 files changed, 21 insertions, 30 deletions
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 0ded5f926c7a..699c472a35f0 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -13846,13 +13846,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
*/
public Insets getLayoutInsets() {
if (mLayoutInsets == null) {
- if (mBackground == null) {
- mLayoutInsets = Insets.NONE;
- } else {
- Rect insetRect = new Rect();
- boolean hasInsets = mBackground.getLayoutInsets(insetRect);
- mLayoutInsets = hasInsets ? Insets.of(insetRect) : Insets.NONE;
- }
+ mLayoutInsets = (mBackground == null) ? Insets.NONE : mBackground.getLayoutInsets();
}
return mLayoutInsets;
}
diff --git a/graphics/java/android/graphics/Insets.java b/graphics/java/android/graphics/Insets.java
index c570cd4a4f69..156f9903a632 100644
--- a/graphics/java/android/graphics/Insets.java
+++ b/graphics/java/android/graphics/Insets.java
@@ -67,7 +67,7 @@ public class Insets {
* @return an Insets instance with the appropriate values
*/
public static Insets of(Rect r) {
- return of(r.left, r.top, r.right, r.bottom);
+ return (r == null) ? NONE : of(r.left, r.top, r.right, r.bottom);
}
/**
diff --git a/graphics/java/android/graphics/drawable/Drawable.java b/graphics/java/android/graphics/drawable/Drawable.java
index 7d1942acaf43..6193ca72baf6 100644
--- a/graphics/java/android/graphics/drawable/Drawable.java
+++ b/graphics/java/android/graphics/drawable/Drawable.java
@@ -16,6 +16,7 @@
package android.graphics.drawable;
+import android.graphics.Insets;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
@@ -706,16 +707,12 @@ public abstract class Drawable {
/**
* Return in insets the layout insets suggested by this Drawable for use with alignment
- * operations during layout. Positive values move toward the
- * center of the Drawable. Returns true if this drawable
- * actually has a layout insets, else false. When false is returned, the padding
- * is always set to 0.
+ * operations during layout.
*
* @hide
*/
- public boolean getLayoutInsets(Rect insets) {
- insets.set(0, 0, 0, 0);
- return false;
+ public Insets getLayoutInsets() {
+ return Insets.NONE;
}
/**
diff --git a/graphics/java/android/graphics/drawable/DrawableContainer.java b/graphics/java/android/graphics/drawable/DrawableContainer.java
index e10f9e8d8de1..15b2c0b7586b 100644
--- a/graphics/java/android/graphics/drawable/DrawableContainer.java
+++ b/graphics/java/android/graphics/drawable/DrawableContainer.java
@@ -19,6 +19,7 @@ package android.graphics.drawable;
import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.ColorFilter;
+import android.graphics.Insets;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.os.SystemClock;
@@ -94,12 +95,8 @@ public class DrawableContainer extends Drawable implements Drawable.Callback {
* @hide
*/
@Override
- public boolean getLayoutInsets(Rect insets) {
- if (mCurrDrawable != null) {
- return mCurrDrawable.getLayoutInsets(insets);
- } else {
- return super.getLayoutInsets(insets);
- }
+ public Insets getLayoutInsets() {
+ return (mCurrDrawable == null) ? Insets.NONE : mCurrDrawable.getLayoutInsets();
}
@Override
diff --git a/graphics/java/android/graphics/drawable/NinePatchDrawable.java b/graphics/java/android/graphics/drawable/NinePatchDrawable.java
index e502b7a0c16e..006baa70a977 100644
--- a/graphics/java/android/graphics/drawable/NinePatchDrawable.java
+++ b/graphics/java/android/graphics/drawable/NinePatchDrawable.java
@@ -22,6 +22,7 @@ import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.ColorFilter;
+import android.graphics.Insets;
import android.graphics.NinePatch;
import android.graphics.Paint;
import android.graphics.PixelFormat;
@@ -224,13 +225,8 @@ public class NinePatchDrawable extends Drawable {
* @hide
*/
@Override
- public boolean getLayoutInsets(Rect insets) {
- Rect layoutInsets = mNinePatchState.mLayoutInsets;
- if (layoutInsets == null) {
- return super.getLayoutInsets(insets);
- }
- insets.set(layoutInsets);
- return true;
+ public Insets getLayoutInsets() {
+ return mNinePatchState.mLayoutInsets;
}
@Override
@@ -390,7 +386,7 @@ public class NinePatchDrawable extends Drawable {
private final static class NinePatchState extends ConstantState {
final NinePatch mNinePatch;
final Rect mPadding;
- final Rect mLayoutInsets;
+ final Insets mLayoutInsets;
final boolean mDither;
int mChangingConfigurations;
int mTargetDensity = DisplayMetrics.DENSITY_DEFAULT;
@@ -406,7 +402,7 @@ public class NinePatchDrawable extends Drawable {
NinePatchState(NinePatch ninePatch, Rect rect, Rect layoutInsets, boolean dither) {
mNinePatch = ninePatch;
mPadding = rect;
- mLayoutInsets = layoutInsets;
+ mLayoutInsets = Insets.of(layoutInsets);
mDither = dither;
}
diff --git a/tests/GridLayoutTest/src/com/android/test/layout/LayoutInsetsTest.java b/tests/GridLayoutTest/src/com/android/test/layout/LayoutInsetsTest.java
index 74daccce3726..1a4c36d894f6 100644
--- a/tests/GridLayoutTest/src/com/android/test/layout/LayoutInsetsTest.java
+++ b/tests/GridLayoutTest/src/com/android/test/layout/LayoutInsetsTest.java
@@ -36,6 +36,13 @@ public class LayoutInsetsTest extends Activity {
{
Button c = new Button(context);
c.setBackgroundResource(R.drawable.btn_default);
+ c.setText("Test");
+ p.addView(c);
+ }
+
+ {
+ Button c = new Button(context);
+ c.setBackgroundResource(R.drawable.btn_default);
c.setText("Manual setup");
p.addView(c);
c.setOnClickListener(new OnClickListener() {