From 87980f9a7383fa4150f9c037ed34c37677f97f97 Mon Sep 17 00:00:00 2001 From: Alan Viverette Date: Wed, 5 Feb 2014 14:05:51 -0800 Subject: [PATCH] Adds hotspot support to LayerDrawable and InsetDrawable Change-Id: Id17f460c8e4e0a6bf9fd39a4a7b8c79fa2df8d29 --- .../android/graphics/drawable/InsetDrawable.java | 32 +++++++++++++ .../android/graphics/drawable/LayerDrawable.java | 52 ++++++++++++++++++++++ 2 files changed, 84 insertions(+) diff --git a/graphics/java/android/graphics/drawable/InsetDrawable.java b/graphics/java/android/graphics/drawable/InsetDrawable.java index 818878254acb..f841d6a1dd0d 100644 --- a/graphics/java/android/graphics/drawable/InsetDrawable.java +++ b/graphics/java/android/graphics/drawable/InsetDrawable.java @@ -182,6 +182,38 @@ public class InsetDrawable extends Drawable implements Drawable.Callback } } + /** + * @hide + */ + @Override + public boolean supportsHotspots() { + return mInsetState.mDrawable.supportsHotspots(); + } + + /** + * @hide + */ + @Override + public void setHotspot(int id, float x, float y) { + mInsetState.mDrawable.setHotspot(id, x, y); + } + + /** + * @hide + */ + @Override + public void removeHotspot(int id) { + mInsetState.mDrawable.removeHotspot(id); + } + + /** + * @hide + */ + @Override + public void clearHotspots() { + mInsetState.mDrawable.clearHotspots(); + } + @Override public boolean setVisible(boolean visible, boolean restart) { mInsetState.mDrawable.setVisible(visible, restart); diff --git a/graphics/java/android/graphics/drawable/LayerDrawable.java b/graphics/java/android/graphics/drawable/LayerDrawable.java index e8b3f64989b5..2e098a00a65a 100644 --- a/graphics/java/android/graphics/drawable/LayerDrawable.java +++ b/graphics/java/android/graphics/drawable/LayerDrawable.java @@ -423,6 +423,58 @@ public class LayerDrawable extends Drawable implements Drawable.Callback { } } + /** + * @hide + */ + @Override + public boolean supportsHotspots() { + final ChildDrawable[] array = mLayerState.mChildren; + final int N = mLayerState.mNum; + for (int i = 0; i < N; i++) { + if (array[i].mDrawable.supportsHotspots()) { + return true; + } + } + + return false; + } + + /** + * @hide + */ + @Override + public void setHotspot(int id, float x, float y) { + final ChildDrawable[] array = mLayerState.mChildren; + final int N = mLayerState.mNum; + for (int i = 0; i < N; i++) { + array[i].mDrawable.setHotspot(id, x, y); + } + } + + /** + * @hide + */ + @Override + public void removeHotspot(int id) { + final ChildDrawable[] array = mLayerState.mChildren; + final int N = mLayerState.mNum; + for (int i = 0; i < N; i++) { + array[i].mDrawable.removeHotspot(id); + } + } + + /** + * @hide + */ + @Override + public void clearHotspots() { + final ChildDrawable[] array = mLayerState.mChildren; + final int N = mLayerState.mNum; + for (int i = 0; i < N; i++) { + array[i].mDrawable.clearHotspots(); + } + } + private void computeStackedPadding(Rect padding) { padding.left = 0; padding.top = 0; -- 2.11.0