From f538a020eec631ca19ce493877de2ebca3b8d6f3 Mon Sep 17 00:00:00 2001 From: Xavier Ducrohet Date: Thu, 3 Feb 2011 11:43:14 -0800 Subject: Add app name/icon and current render locale to the LayoutLib API. This allows the layoutlib to render system/title/action bars as a window decor like it would look on the device. This can be disabled with RenderParams.setForceNoDecor(). (BTW, Params was renamed RenderParams too) Also minor update to the API by replacing an int with Density since the enum is now accessible to the API and layoutlib. Change-Id: Ic37770a9276d12af90c60199a84b04cb64e7c3a1 --- .../build/builders/PreCompilerBuilder.java | 1 + .../editors/layout/UiElementPullParser.java | 8 +++---- .../editors/layout/gle2/GraphicalEditorPart.java | 27 +++++++++++++++++----- .../editors/layout/gle2/PaletteControl.java | 2 +- .../editors/layout/gle2/PreviewIconFactory.java | 2 +- .../layoutRendering/ApiDemosRenderingTest.java | 8 +++---- .../editors/layout/UiElementPullParserTest.java | 2 +- 7 files changed, 33 insertions(+), 17 deletions(-) (limited to 'eclipse') diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/builders/PreCompilerBuilder.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/builders/PreCompilerBuilder.java index 5886cff..c1ba22c 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/builders/PreCompilerBuilder.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/builders/PreCompilerBuilder.java @@ -532,6 +532,7 @@ public class PreCompilerBuilder extends BaseBuilder { removeMarkersFromProject(project, AndroidConstants.MARKER_AAPT_COMPILE); removeMarkersFromProject(project, AndroidConstants.MARKER_XML); removeMarkersFromProject(project, AndroidConstants.MARKER_AIDL); + removeMarkersFromProject(project, AndroidConstants.MARKER_RENDERSCRIPT); removeMarkersFromProject(project, AndroidConstants.MARKER_ANDROID); } diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/UiElementPullParser.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/UiElementPullParser.java index 790cbc2..8ec3111 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/UiElementPullParser.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/UiElementPullParser.java @@ -65,7 +65,7 @@ public final class UiElementPullParser extends BasePullParser { private boolean mZeroAttributeIsPadding = false; private boolean mIncreaseExistingPadding = false; private List mLayoutDescriptors; - private final int mDensityValue; + private final Density mDensity; private final float mXdpi; /** @@ -106,12 +106,12 @@ public final class UiElementPullParser extends BasePullParser { */ public UiElementPullParser(UiElementNode top, boolean explodeRendering, Set explodeNodes, - int densityValue, float xdpi, IProject project) { + Density density, float xdpi, IProject project) { super(); mRoot = top; mExplodedRendering = explodeRendering; mExplodeNodes = explodeNodes; - mDensityValue = densityValue; + mDensity = density; mXdpi = xdpi; if (mExplodedRendering) { // get the layout descriptor @@ -571,7 +571,7 @@ public final class UiElementPullParser extends BasePullParser { case COMPLEX_UNIT_DIP: case COMPLEX_UNIT_SP: // intended fall-through since we don't // adjust for font size - f *= (float)mDensityValue / Density.DEFAULT_DENSITY; + f *= (float)mDensity.getDpiValue() / Density.DEFAULT_DENSITY; break; case COMPLEX_UNIT_PT: f *= mXdpi * (1.0f / 72); diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/GraphicalEditorPart.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/GraphicalEditorPart.java index eda6514..f09ef99 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/GraphicalEditorPart.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/GraphicalEditorPart.java @@ -26,11 +26,11 @@ import com.android.ide.common.rendering.StaticRenderSession; import com.android.ide.common.rendering.api.Capability; import com.android.ide.common.rendering.api.ILayoutPullParser; import com.android.ide.common.rendering.api.LayoutLog; -import com.android.ide.common.rendering.api.Params; +import com.android.ide.common.rendering.api.RenderParams; import com.android.ide.common.rendering.api.RenderSession; import com.android.ide.common.rendering.api.ResourceValue; import com.android.ide.common.rendering.api.Result; -import com.android.ide.common.rendering.api.Params.RenderingMode; +import com.android.ide.common.rendering.api.RenderParams.RenderingMode; import com.android.ide.common.resources.ResourceResolver; import com.android.ide.common.sdk.LoadStatus; import com.android.ide.eclipse.adt.AdtPlugin; @@ -74,7 +74,6 @@ import com.android.sdklib.SdkConstants; import com.android.sdklib.io.IAbstractFile; import com.android.sdklib.io.StreamException; import com.android.sdklib.xml.AndroidManifest; -import com.android.sdklib.xml.AndroidManifestParser; import com.android.sdkuilib.internal.widgets.ResolutionChooserDialog; import org.eclipse.core.resources.IFile; @@ -1618,7 +1617,7 @@ public class GraphicalEditorPart extends EditorPart } } - int density = mConfigComposite.getDensity().getDpiValue(); + Density density = mConfigComposite.getDensity(); float xdpi = mConfigComposite.getXDpi(); float ydpi = mConfigComposite.getYDpi(); boolean isProjectTheme = mConfigComposite.isProjectTheme(); @@ -1661,7 +1660,7 @@ public class GraphicalEditorPart extends EditorPart configuredProjectRes, frameworkResources, theme, isProjectTheme); - Params params = new Params( + RenderParams params = new RenderParams( topParser, iProject /* projectKey */, width, height, @@ -1673,6 +1672,22 @@ public class GraphicalEditorPart extends EditorPart mTargetSdkVersion, logger); + // FIXME make persistent and only reload when the manifest (or at least resources) chanage. + IFolderWrapper projectFolder = new IFolderWrapper(getProject()); + IAbstractFile manifest = AndroidManifest.getManifest(projectFolder); + if (manifest != null) { + try { + params.setAppIcon(AndroidManifest.getApplicationIcon(manifest)); + } catch (Exception e) { + // ignore. + } + try { + params.setAppLabel(AndroidManifest.getApplicationLabel(manifest)); + } catch (Exception e) { + // ignore. + } + } + ScreenSizeQualifier ssq = mConfigComposite.getCurrentConfig().getScreenSizeQualifier(); if (ssq != null) { params.setConfigScreenSize(ssq.getValue()); @@ -2429,7 +2444,7 @@ public class GraphicalEditorPart extends EditorPart int oldMinSdkVersion = mMinSdkVersion; int oldTargetSdkVersion = mTargetSdkVersion; - IAbstractFile manifestFile = AndroidManifestParser.getManifest( + IAbstractFile manifestFile = AndroidManifest.getManifest( new IFolderWrapper(mEditedFile.getProject())); if (manifestFile != null) { diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/PaletteControl.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/PaletteControl.java index 00604d6..08aef31 100755 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/PaletteControl.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/PaletteControl.java @@ -27,9 +27,9 @@ import com.android.ide.common.api.Rect; import com.android.ide.common.rendering.LayoutLibrary; import com.android.ide.common.rendering.api.Capability; import com.android.ide.common.rendering.api.LayoutLog; +import com.android.ide.common.rendering.api.RenderParams.RenderingMode; import com.android.ide.common.rendering.api.RenderSession; import com.android.ide.common.rendering.api.ViewInfo; -import com.android.ide.common.rendering.api.Params.RenderingMode; import com.android.ide.eclipse.adt.internal.editors.IconFactory; import com.android.ide.eclipse.adt.internal.editors.descriptors.DocumentDescriptor; import com.android.ide.eclipse.adt.internal.editors.descriptors.ElementDescriptor; diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/PreviewIconFactory.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/PreviewIconFactory.java index 2fb2ebe..1d92f3a 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/PreviewIconFactory.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/PreviewIconFactory.java @@ -25,7 +25,7 @@ import com.android.ide.common.rendering.api.RenderSession; import com.android.ide.common.rendering.api.ResourceValue; import com.android.ide.common.rendering.api.StyleResourceValue; import com.android.ide.common.rendering.api.ViewInfo; -import com.android.ide.common.rendering.api.Params.RenderingMode; +import com.android.ide.common.rendering.api.RenderParams.RenderingMode; import com.android.ide.common.resources.ResourceResolver; import com.android.ide.eclipse.adt.AdtPlugin; import com.android.ide.eclipse.adt.internal.editors.descriptors.DocumentDescriptor; diff --git a/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/tests/functests/layoutRendering/ApiDemosRenderingTest.java b/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/tests/functests/layoutRendering/ApiDemosRenderingTest.java index 13d9a49..0fa0df9 100644 --- a/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/tests/functests/layoutRendering/ApiDemosRenderingTest.java +++ b/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/tests/functests/layoutRendering/ApiDemosRenderingTest.java @@ -19,10 +19,10 @@ package com.android.ide.eclipse.tests.functests.layoutRendering; import com.android.ide.common.rendering.LayoutLibrary; import com.android.ide.common.rendering.api.ILayoutPullParser; import com.android.ide.common.rendering.api.IProjectCallback; -import com.android.ide.common.rendering.api.Params; +import com.android.ide.common.rendering.api.RenderParams; import com.android.ide.common.rendering.api.RenderSession; import com.android.ide.common.rendering.api.ResourceValue; -import com.android.ide.common.rendering.api.Params.RenderingMode; +import com.android.ide.common.rendering.api.RenderParams.RenderingMode; import com.android.ide.common.resources.ResourceResolver; import com.android.ide.common.sdk.LoadStatus; import com.android.ide.eclipse.adt.internal.resources.configurations.FolderConfiguration; @@ -207,13 +207,13 @@ public class ApiDemosRenderingTest extends SdkTestCase { configuredProject, configuredFramework, "Theme", false /*isProjectTheme*/); - RenderSession session = layoutLib.createSession(new Params( + RenderSession session = layoutLib.createSession(new RenderParams( parser, null /*projectKey*/, 320, 480, RenderingMode.NORMAL, - 160, //density + Density.MEDIUM, 160, //xdpi 160, // ydpi resolver, diff --git a/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/layout/UiElementPullParserTest.java b/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/layout/UiElementPullParserTest.java index e0292ee..fbd3aa0 100644 --- a/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/layout/UiElementPullParserTest.java +++ b/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/layout/UiElementPullParserTest.java @@ -171,7 +171,7 @@ public class UiElementPullParserTest extends TestCase { ui, // model false, // explodedView null, // explodeNodes - Density.MEDIUM.getDpiValue(), // density (default from ConfigurationComposite) + Density.MEDIUM, // density (default from ConfigurationComposite) Density.MEDIUM.getDpiValue(), // xdpi (default from ConfigurationComposite) null // iProject ); -- cgit v1.1