OSDN Git Service

Adds hotspot support to LayerDrawable and InsetDrawable
authorAlan Viverette <alanv@google.com>
Wed, 5 Feb 2014 22:05:51 +0000 (14:05 -0800)
committerAlan Viverette <alanv@google.com>
Wed, 5 Feb 2014 22:05:51 +0000 (14:05 -0800)
Change-Id: Id17f460c8e4e0a6bf9fd39a4a7b8c79fa2df8d29

graphics/java/android/graphics/drawable/InsetDrawable.java
graphics/java/android/graphics/drawable/LayerDrawable.java

index 8188782..f841d6a 100644 (file)
@@ -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);
index e8b3f64..2e098a0 100644 (file)
@@ -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;