diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeResources.java b/tools/layoutlib/bridge/src/android/content/res/BridgeResources.java similarity index 97% rename from tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeResources.java rename to tools/layoutlib/bridge/src/android/content/res/BridgeResources.java index 1756496fcada8..e039898de92cc 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeResources.java +++ b/tools/layoutlib/bridge/src/android/content/res/BridgeResources.java @@ -14,13 +14,15 @@ * limitations under the License. */ -package com.android.layoutlib.bridge.android; +package android.content.res; import com.android.ide.common.rendering.api.IProjectCallback; import com.android.ide.common.rendering.api.LayoutLog; import com.android.ide.common.rendering.api.ResourceValue; import com.android.layoutlib.bridge.Bridge; import com.android.layoutlib.bridge.BridgeConstants; +import com.android.layoutlib.bridge.android.BridgeContext; +import com.android.layoutlib.bridge.android.BridgeXmlBlockParser; import com.android.layoutlib.bridge.impl.ParserFactory; import com.android.layoutlib.bridge.impl.ResourceHelper; import com.android.ninepatch.NinePatch; @@ -30,13 +32,6 @@ import com.android.util.Pair; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; -import android.content.res.AssetFileDescriptor; -import android.content.res.AssetManager; -import android.content.res.ColorStateList; -import android.content.res.Configuration; -import android.content.res.Resources; -import android.content.res.TypedArray; -import android.content.res.XmlResourceParser; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.util.DisplayMetrics; @@ -94,7 +89,7 @@ public final class BridgeResources extends Resources { *
* {@link Bridge} calls this method after setting up a new bridge. */ - /*package*/ static Resources initSystem(BridgeContext context, + /*package*/ public static Resources initSystem(BridgeContext context, AssetManager assets, DisplayMetrics metrics, Configuration config, @@ -110,7 +105,7 @@ public final class BridgeResources extends Resources { * Disposes the static {@link Resources#mSystem} to make sure we don't leave objects * around that would prevent us from unloading the library. */ - /*package*/ static void disposeSystem() { + /*package*/ public static void disposeSystem() { if (Resources.mSystem instanceof BridgeResources) { ((BridgeResources)(Resources.mSystem)).mContext = null; ((BridgeResources)(Resources.mSystem)).mProjectCallback = null; @@ -336,7 +331,7 @@ public final class BridgeResources extends Resources { if (ResourceHelper.parseFloatAttribute( value.getFirst(), v, mTmpValue, true /*requireUnit*/) && mTmpValue.type == TypedValue.TYPE_DIMENSION) { - return mTmpValue.getDimension(mMetrics); + return mTmpValue.getDimension(getDisplayMetrics()); } } } @@ -359,7 +354,8 @@ public final class BridgeResources extends Resources { if (ResourceHelper.parseFloatAttribute( value.getFirst(), v, mTmpValue, true /*requireUnit*/) && mTmpValue.type == TypedValue.TYPE_DIMENSION) { - return TypedValue.complexToDimensionPixelOffset(mTmpValue.data, mMetrics); + return TypedValue.complexToDimensionPixelOffset(mTmpValue.data, + getDisplayMetrics()); } } } @@ -382,7 +378,8 @@ public final class BridgeResources extends Resources { if (ResourceHelper.parseFloatAttribute( value.getFirst(), v, mTmpValue, true /*requireUnit*/) && mTmpValue.type == TypedValue.TYPE_DIMENSION) { - return TypedValue.complexToDimensionPixelSize(mTmpValue.data, mMetrics); + return TypedValue.complexToDimensionPixelSize(mTmpValue.data, + getDisplayMetrics()); } } } diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeTypedArray.java b/tools/layoutlib/bridge/src/android/content/res/BridgeTypedArray.java similarity index 98% rename from tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeTypedArray.java rename to tools/layoutlib/bridge/src/android/content/res/BridgeTypedArray.java index fc2f2f8a21779..9deed32555d16 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeTypedArray.java +++ b/tools/layoutlib/bridge/src/android/content/res/BridgeTypedArray.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.layoutlib.bridge.android; +package android.content.res; import com.android.ide.common.rendering.api.DeclareStyleableResourceValue; import com.android.ide.common.rendering.api.LayoutLog; @@ -24,6 +24,8 @@ import com.android.ide.common.rendering.api.StyleResourceValue; import com.android.internal.util.XmlUtils; import com.android.layoutlib.bridge.Bridge; import com.android.layoutlib.bridge.BridgeConstants; +import com.android.layoutlib.bridge.android.BridgeContext; +import com.android.layoutlib.bridge.android.BridgeXmlBlockParser; import com.android.layoutlib.bridge.impl.ParserFactory; import com.android.layoutlib.bridge.impl.ResourceHelper; import com.android.resources.ResourceType; @@ -445,7 +447,7 @@ public final class BridgeTypedArray extends TypedArray { } if (ResourceHelper.parseFloatAttribute(mNames[index], s, mValue, true /*requireUnit*/)) { - return mValue.getDimension(mBridgeResources.mMetrics); + return mValue.getDimension(mBridgeResources.getDisplayMetrics()); } // looks like we were unable to resolve the dimension value @@ -572,7 +574,7 @@ public final class BridgeTypedArray extends TypedArray { } if (ResourceHelper.parseFloatAttribute(mNames[index], s, mValue, true /*requireUnit*/)) { - float f = mValue.getDimension(mBridgeResources.mMetrics); + float f = mValue.getDimension(mBridgeResources.getDisplayMetrics()); final int res = (int)(f+0.5f); if (res != 0) return res; diff --git a/tools/layoutlib/bridge/src/android/graphics/BitmapFactory_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/BitmapFactory_Delegate.java index 080b85f743d45..945b3cd7ca22e 100644 --- a/tools/layoutlib/bridge/src/android/graphics/BitmapFactory_Delegate.java +++ b/tools/layoutlib/bridge/src/android/graphics/BitmapFactory_Delegate.java @@ -17,12 +17,12 @@ package android.graphics; import com.android.layoutlib.bridge.Bridge; -import com.android.layoutlib.bridge.android.BridgeResources.NinePatchInputStream; import com.android.layoutlib.bridge.impl.DelegateManager; import com.android.ninepatch.NinePatchChunk; import com.android.resources.Density; import com.android.tools.layoutlib.annotations.LayoutlibDelegate; +import android.content.res.BridgeResources.NinePatchInputStream; import android.graphics.BitmapFactory.Options; import java.io.FileDescriptor; diff --git a/tools/layoutlib/bridge/src/android/view/LayoutInflater_Delegate.java b/tools/layoutlib/bridge/src/android/view/LayoutInflater_Delegate.java index 3ef328802ec41..64efa7e51dfe2 100644 --- a/tools/layoutlib/bridge/src/android/view/LayoutInflater_Delegate.java +++ b/tools/layoutlib/bridge/src/android/view/LayoutInflater_Delegate.java @@ -38,11 +38,15 @@ import java.io.IOException; */ public class LayoutInflater_Delegate { + private static final String TAG_MERGE = "merge"; + public static boolean sIsInInclude = false; /** * Recursive method used to descend down the xml hierarchy and instantiate * views, instantiate their children, and then call onFinishInflate(). + * + * This implementation just records the merge status before calling the default implementation. */ @LayoutlibDelegate /*package*/ static void rInflate(LayoutInflater thisInflater, @@ -58,37 +62,7 @@ public class LayoutInflater_Delegate { // ---- START DEFAULT IMPLEMENTATION. - final int depth = parser.getDepth(); - int type; - - while (((type = parser.next()) != XmlPullParser.END_TAG || - parser.getDepth() > depth) && type != XmlPullParser.END_DOCUMENT) { - - if (type != XmlPullParser.START_TAG) { - continue; - } - - final String name = parser.getName(); - - if (LayoutInflater.TAG_REQUEST_FOCUS.equals(name)) { - thisInflater.parseRequestFocus(parser, parent); - } else if (LayoutInflater.TAG_INCLUDE.equals(name)) { - if (parser.getDepth() == 0) { - throw new InflateException("