aboutsummaryrefslogtreecommitdiffstats
path: root/layoutlib_api/src/com/android/layoutlib/api
diff options
context:
space:
mode:
authorXavier Ducrohet <xav@android.com>2010-12-09 19:40:29 -0800
committerXavier Ducrohet <xav@android.com>2010-12-10 11:30:54 -0800
commit79ebb8f4ec3236d361c4b6a6d97440a29c50aa4a (patch)
tree2b0a0b0047a5e9d7c5e794370db5a79163c75f03 /layoutlib_api/src/com/android/layoutlib/api
parent9a1f4d718be6c277b344ed361821e275858ebd11 (diff)
downloadsdk-79ebb8f4ec3236d361c4b6a6d97440a29c50aa4a.zip
sdk-79ebb8f4ec3236d361c4b6a6d97440a29c50aa4a.tar.gz
sdk-79ebb8f4ec3236d361c4b6a6d97440a29c50aa4a.tar.bz2
Clean up the api around Layoutlib.
Move (Style/DensityBased)ResourceValue into layoutlib_api and make the API use that instead of the interface. We'll get ride of the interfaces once only obsolete platforms use them. In ide-commons also got rid of LayoutBridgeWrapper and moved the code in LayoutLibrary which does not expose the bridge anymore, and instead expose an API similar to the LayoutBridge class. Updated ADT to use LayoutLibrary directly instead of going through LayoutLibrary.getBridge(). This allows us to hide some things like querying the API level and relying instead on Capabilities (with special handle for legacy bridges). Also added an error message to LayoutLibrary to display why it may have failed to load. Added a check to the API level and don't load layoutlib that are more recent than the client. Change-Id: Ie4e615d8d32485ee577bb88e95cd3f562bf590cb
Diffstat (limited to 'layoutlib_api/src/com/android/layoutlib/api')
-rw-r--r--layoutlib_api/src/com/android/layoutlib/api/Capability.java (renamed from layoutlib_api/src/com/android/layoutlib/api/Capabilities.java)11
-rw-r--r--layoutlib_api/src/com/android/layoutlib/api/DensityBasedResourceValue.java44
-rw-r--r--layoutlib_api/src/com/android/layoutlib/api/IDensityBasedResourceValue.java11
-rw-r--r--layoutlib_api/src/com/android/layoutlib/api/IResourceValue.java6
-rw-r--r--layoutlib_api/src/com/android/layoutlib/api/IStyleResourceValue.java9
-rw-r--r--layoutlib_api/src/com/android/layoutlib/api/LayoutBridge.java6
-rw-r--r--layoutlib_api/src/com/android/layoutlib/api/ResourceDensity.java59
-rw-r--r--layoutlib_api/src/com/android/layoutlib/api/ResourceValue.java87
-rw-r--r--layoutlib_api/src/com/android/layoutlib/api/SceneParams.java12
-rw-r--r--layoutlib_api/src/com/android/layoutlib/api/StyleResourceValue.java77
10 files changed, 305 insertions, 17 deletions
diff --git a/layoutlib_api/src/com/android/layoutlib/api/Capabilities.java b/layoutlib_api/src/com/android/layoutlib/api/Capability.java
index 0edc764..586642f 100644
--- a/layoutlib_api/src/com/android/layoutlib/api/Capabilities.java
+++ b/layoutlib_api/src/com/android/layoutlib/api/Capability.java
@@ -22,9 +22,18 @@ import com.android.layoutlib.api.LayoutScene.IAnimationListener;
* Enum describing the layout bridge capabilities.
*
*/
-public enum Capabilities {
+public enum Capability {
+ /** Ability to render at full size, as required by the layout, and unbound by the screen */
+ UNBOUND_RENDERING,
+ /** Ability to override the background of the rendering with transparency using
+ * {@link SceneParams#setCustomBackgroundColor(int)} */
+ TRANSPARENCY,
/** Ability to call {@link LayoutScene#render()} and {@link LayoutScene#render(long)}. */
RENDER,
+ /**
+ * Ability to control embedded layout parsers through {@link IXmlPullParser#getParser(String)}
+ */
+ EMBEDDED_LAYOUT,
/** Ability to call<br>
* {@link LayoutScene#insertChild(Object, IXmlPullParser, int, com.android.layoutlib.api.LayoutScene.IAnimationListener)}<br>
* {@link LayoutScene#moveChild(Object, Object, int, com.android.layoutlib.api.LayoutScene.IAnimationListener)}<br>
diff --git a/layoutlib_api/src/com/android/layoutlib/api/DensityBasedResourceValue.java b/layoutlib_api/src/com/android/layoutlib/api/DensityBasedResourceValue.java
new file mode 100644
index 0000000..78b084c
--- /dev/null
+++ b/layoutlib_api/src/com/android/layoutlib/api/DensityBasedResourceValue.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2008 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.
+ */
+
+package com.android.layoutlib.api;
+
+@SuppressWarnings("deprecation")
+public class DensityBasedResourceValue extends ResourceValue implements IDensityBasedResourceValue {
+
+ private ResourceDensity mDensity;
+
+ public DensityBasedResourceValue(String type, String name, String value,
+ ResourceDensity density, boolean isFramework) {
+ super(type, name, value, isFramework);
+ mDensity = density;
+ }
+
+ /**
+ * Returns the density for which this resource is configured.
+ * @return the density.
+ */
+ public ResourceDensity getResourceDensity() {
+ return mDensity;
+ }
+
+ /** Legacy method, do not call
+ * @deprecated use {@link #getResourceDensity()} instead.
+ */
+ public Density getDensity() {
+ return Density.getEnum(mDensity.getDpi());
+ }
+}
diff --git a/layoutlib_api/src/com/android/layoutlib/api/IDensityBasedResourceValue.java b/layoutlib_api/src/com/android/layoutlib/api/IDensityBasedResourceValue.java
index e969034..bc319c2 100644
--- a/layoutlib_api/src/com/android/layoutlib/api/IDensityBasedResourceValue.java
+++ b/layoutlib_api/src/com/android/layoutlib/api/IDensityBasedResourceValue.java
@@ -18,9 +18,17 @@ package com.android.layoutlib.api;
/**
* Represents an Android Resources that has a density info attached to it.
+ * @deprecated use {@link DensityBasedResourceValue}.
*/
+@Deprecated
public interface IDensityBasedResourceValue extends IResourceValue {
+ /**
+ * Density.
+ *
+ * @deprecated use {@link ResourceDensity}.
+ */
+ @Deprecated
public static enum Density {
XHIGH(320),
HIGH(240),
@@ -28,8 +36,6 @@ public interface IDensityBasedResourceValue extends IResourceValue {
LOW(120),
NODPI(0);
- public final static int DEFAULT_DENSITY = 160;
-
private final int mValue;
Density(int value) {
@@ -58,6 +64,7 @@ public interface IDensityBasedResourceValue extends IResourceValue {
/**
* Returns the density associated to the resource.
+ * @deprecated use {@link DensityBasedResourceValue#getResourceDensity()}
*/
Density getDensity();
}
diff --git a/layoutlib_api/src/com/android/layoutlib/api/IResourceValue.java b/layoutlib_api/src/com/android/layoutlib/api/IResourceValue.java
index 1da9508..8a3e754 100644
--- a/layoutlib_api/src/com/android/layoutlib/api/IResourceValue.java
+++ b/layoutlib_api/src/com/android/layoutlib/api/IResourceValue.java
@@ -18,9 +18,11 @@ package com.android.layoutlib.api;
/**
* Represents an android resource with a name and a string value.
+ * @deprecated use {@link ResourceValue}.
*/
+@Deprecated
public interface IResourceValue {
-
+
/**
* Returns the type of the resource. For instance "drawable", "color", etc...
*/
@@ -35,7 +37,7 @@ public interface IResourceValue {
* Returns the value of the resource, as defined in the XML. This can be <code>null</code>
*/
String getValue();
-
+
/**
* Returns whether the resource is a framework resource (<code>true</code>) or a project
* resource (<code>false</false>).
diff --git a/layoutlib_api/src/com/android/layoutlib/api/IStyleResourceValue.java b/layoutlib_api/src/com/android/layoutlib/api/IStyleResourceValue.java
index 2f17e69..33133c9 100644
--- a/layoutlib_api/src/com/android/layoutlib/api/IStyleResourceValue.java
+++ b/layoutlib_api/src/com/android/layoutlib/api/IStyleResourceValue.java
@@ -16,12 +16,13 @@
package com.android.layoutlib.api;
-
/**
* Represents an android style resources with a name and a list of children {@link IResourceValue}.
+ * @deprecated Use {@link StyleResourceValue}.
*/
+@Deprecated
public interface IStyleResourceValue extends IResourceValue {
-
+
/**
* Returns the parent style name or <code>null</code> if unknown.
*/
@@ -29,7 +30,9 @@ public interface IStyleResourceValue extends IResourceValue {
/**
* Find an item in the list by name
- * @param name
+ * @param name the name of the resource
+ *
+ * @deprecated use {@link StyleResourceValue#findValue(String)}
*/
IResourceValue findItem(String name);
}
diff --git a/layoutlib_api/src/com/android/layoutlib/api/LayoutBridge.java b/layoutlib_api/src/com/android/layoutlib/api/LayoutBridge.java
index 62a1d1d..7c66bc4 100644
--- a/layoutlib_api/src/com/android/layoutlib/api/LayoutBridge.java
+++ b/layoutlib_api/src/com/android/layoutlib/api/LayoutBridge.java
@@ -36,12 +36,12 @@ public abstract class LayoutBridge {
public abstract int getApiLevel();
/**
- * Returns an {@link EnumSet} of the supported {@link Capabilities}.
+ * Returns an {@link EnumSet} of the supported {@link Capability}.
* @return an {@link EnumSet} with the supported capabilities.
*
*/
- public EnumSet<Capabilities> getCapabilities() {
- return EnumSet.noneOf(Capabilities.class);
+ public EnumSet<Capability> getCapabilities() {
+ return EnumSet.noneOf(Capability.class);
}
/**
diff --git a/layoutlib_api/src/com/android/layoutlib/api/ResourceDensity.java b/layoutlib_api/src/com/android/layoutlib/api/ResourceDensity.java
new file mode 100644
index 0000000..cebb8df
--- /dev/null
+++ b/layoutlib_api/src/com/android/layoutlib/api/ResourceDensity.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2010 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.
+ */
+
+package com.android.layoutlib.api;
+
+/**
+ * Enum representing the density class of Android resources.
+ */
+public enum ResourceDensity {
+ XHIGH(320),
+ HIGH(240),
+ MEDIUM(160),
+ LOW(120),
+ NODPI(0);
+
+ public final static int DEFAULT_DENSITY = 160;
+
+ private final int mDpi;
+
+ ResourceDensity(int dpi) {
+ mDpi = dpi;
+ }
+
+ /**
+ * Returns the dot-per-inch value associated with the density.
+ * @return the dpi value.
+ */
+ public int getDpi() {
+ return mDpi;
+ }
+
+ /**
+ * Returns the enum matching the given dpi.
+ * @param dpi The dpi
+ * @return the enum for the dpi or null if no match was found.
+ */
+ public static ResourceDensity getEnum(int dpi) {
+ for (ResourceDensity d : values()) {
+ if (d.mDpi == dpi) {
+ return d;
+ }
+ }
+
+ return null;
+ }
+}
diff --git a/layoutlib_api/src/com/android/layoutlib/api/ResourceValue.java b/layoutlib_api/src/com/android/layoutlib/api/ResourceValue.java
new file mode 100644
index 0000000..41f440d
--- /dev/null
+++ b/layoutlib_api/src/com/android/layoutlib/api/ResourceValue.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2008 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.
+ */
+
+package com.android.layoutlib.api;
+
+/**
+ * Represents an android resource with a name and a string value.
+ */
+@SuppressWarnings("deprecation")
+public class ResourceValue implements IResourceValue {
+ private final String mType;
+ private final String mName;
+ private String mValue = null;
+ private final boolean mIsFramwork;
+
+ public ResourceValue(String type, String name, boolean isFramwork) {
+ mType = type;
+ mName = name;
+ mIsFramwork = isFramwork;
+ }
+
+ public ResourceValue(String type, String name, String value, boolean isFramework) {
+ mType = type;
+ mName = name;
+ mValue = value;
+ mIsFramwork = isFramework;
+ }
+
+ /**
+ * Returns the type of the resource. For instance "drawable", "color", etc...
+ */
+ public String getType() {
+ return mType;
+ }
+
+ /**
+ * Returns the name of the resource, as defined in the XML.
+ */
+ public final String getName() {
+ return mName;
+ }
+
+ /**
+ * Returns the value of the resource, as defined in the XML. This can be <code>null</code>
+ */
+ public final String getValue() {
+ return mValue;
+ }
+
+ /**
+ * Returns whether the resource is a framework resource (<code>true</code>) or a project
+ * resource (<code>false</false>).
+ */
+ public final boolean isFramework() {
+ return mIsFramwork;
+ }
+
+
+ /**
+ * Sets the value of the resource.
+ * @param value the new value
+ */
+ public void setValue(String value) {
+ mValue = value;
+ }
+
+ /**
+ * Sets the value from another resource.
+ * @param value the resource value
+ */
+ public void replaceWith(ResourceValue value) {
+ mValue = value.mValue;
+ }
+}
diff --git a/layoutlib_api/src/com/android/layoutlib/api/SceneParams.java b/layoutlib_api/src/com/android/layoutlib/api/SceneParams.java
index 56014f0..309f9fd 100644
--- a/layoutlib_api/src/com/android/layoutlib/api/SceneParams.java
+++ b/layoutlib_api/src/com/android/layoutlib/api/SceneParams.java
@@ -55,8 +55,8 @@ public class SceneParams {
private float mYdpi;
private String mThemeName;
private boolean mIsProjectTheme;
- private Map<String, Map<String, IResourceValue>> mProjectResources;
- private Map<String, Map<String, IResourceValue>> mFrameworkResources;
+ private Map<String, Map<String, ResourceValue>> mProjectResources;
+ private Map<String, Map<String, ResourceValue>> mFrameworkResources;
private IProjectCallback mProjectCallback;
private LayoutLog mLog;
@@ -96,8 +96,8 @@ public class SceneParams {
int screenWidth, int screenHeight, RenderingMode renderingMode,
int density, float xdpi, float ydpi,
String themeName, boolean isProjectTheme,
- Map<String, Map<String, IResourceValue>> projectResources,
- Map<String, Map<String, IResourceValue>> frameworkResources,
+ Map<String, Map<String, ResourceValue>> projectResources,
+ Map<String, Map<String, ResourceValue>> frameworkResources,
IProjectCallback projectCallback, LayoutLog log) {
mLayoutDescription = layoutDescription;
mProjectKey = projectKey;
@@ -194,11 +194,11 @@ public class SceneParams {
return mIsProjectTheme;
}
- public Map<String, Map<String, IResourceValue>> getProjectResources() {
+ public Map<String, Map<String, ResourceValue>> getProjectResources() {
return mProjectResources;
}
- public Map<String, Map<String, IResourceValue>> getFrameworkResources() {
+ public Map<String, Map<String, ResourceValue>> getFrameworkResources() {
return mFrameworkResources;
}
diff --git a/layoutlib_api/src/com/android/layoutlib/api/StyleResourceValue.java b/layoutlib_api/src/com/android/layoutlib/api/StyleResourceValue.java
new file mode 100644
index 0000000..8052b4e
--- /dev/null
+++ b/layoutlib_api/src/com/android/layoutlib/api/StyleResourceValue.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2008 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.
+ */
+
+package com.android.layoutlib.api;
+
+import java.util.HashMap;
+
+/**
+ * Represents an android style resources with a name and a list of children {@link ResourceValue}.
+ */
+@SuppressWarnings("deprecation")
+public final class StyleResourceValue extends ResourceValue implements IStyleResourceValue {
+
+ private String mParentStyle = null;
+ private HashMap<String, ResourceValue> mItems = new HashMap<String, ResourceValue>();
+
+ public StyleResourceValue(String type, String name, boolean isFramework) {
+ super(type, name, isFramework);
+ }
+
+ public StyleResourceValue(String type, String name, String parentStyle, boolean isFramework) {
+ super(type, name, isFramework);
+ mParentStyle = parentStyle;
+ }
+
+ /**
+ * Returns the parent style name or <code>null</code> if unknown.
+ */
+ public String getParentStyle() {
+ return mParentStyle;
+ }
+
+ /**
+ * Finds a value in the list by name
+ * @param name the name of the resource
+ */
+ public ResourceValue findValue(String name) {
+ return mItems.get(name);
+ }
+
+ public void addValue(ResourceValue value) {
+ mItems.put(value.getName(), value);
+ }
+
+ @Override
+ public void replaceWith(ResourceValue value) {
+ assert value instanceof StyleResourceValue;
+ super.replaceWith(value);
+
+ if (value instanceof StyleResourceValue) {
+ mItems.clear();
+ mItems.putAll(((StyleResourceValue)value).mItems);
+ }
+ }
+
+ /**
+ * Legacy method.
+ * @deprecated use {@link #getValue()}
+ */
+ public IResourceValue findItem(String name) {
+ return mItems.get(name);
+ }
+
+}