diff --git a/plugins/android/src/org/jetbrains/android/uipreview/RenderService.java b/plugins/android/src/org/jetbrains/android/uipreview/RenderService.java index 42d0e58e3f10..c6d4927931da 100644 --- a/plugins/android/src/org/jetbrains/android/uipreview/RenderService.java +++ b/plugins/android/src/org/jetbrains/android/uipreview/RenderService.java @@ -42,6 +42,7 @@ class RenderService { private final IProjectCallback myProjectCallback; private final RenderResources myResourceResolver; + private final RenderResources myLegacyResourceResolver; private final LayoutLibrary myLayoutLib; private final FolderConfiguration myConfig; private final int myMinSdkVersion; @@ -50,6 +51,7 @@ class RenderService { RenderService(LayoutLibrary layoutLibrary, @NotNull RenderResources resourceResolver, + @NotNull RenderResources legacyResourceResolver, FolderConfiguration config, float xdpi, float ydpi, @@ -57,6 +59,7 @@ class RenderService { int minSdkVersion) { myLayoutLib = layoutLibrary; myResourceResolver = resourceResolver; + myLegacyResourceResolver = legacyResourceResolver; myConfig = config; myProjectCallback = projectCallback; myMinSdkVersion = minSdkVersion; @@ -91,8 +94,10 @@ class RenderService { final float xdpi = Float.isNaN(myXdpi) ? density.getDpiValue() : myXdpi; final float ydpi = Float.isNaN(myYdpi) ? density.getDpiValue() : myYdpi; + final RenderResources resolver = myLayoutLib.getRevision() > 0 ? myResourceResolver : myLegacyResourceResolver; + final SessionParams params = - new SessionParams(parser, RenderingMode.NORMAL, this, dimension.width, dimension.height, density, xdpi, ydpi, myResourceResolver, + new SessionParams(parser, RenderingMode.NORMAL, this, dimension.width, dimension.height, density, xdpi, ydpi, resolver, myProjectCallback, minSdkVersion, targetSdkVersion, new SimpleLogger(LOG)); params.setExtendedViewInfoMode(false); diff --git a/plugins/android/src/org/jetbrains/android/uipreview/RenderServiceFactory.java b/plugins/android/src/org/jetbrains/android/uipreview/RenderServiceFactory.java index 088428977152..3f482cf9ed4b 100644 --- a/plugins/android/src/org/jetbrains/android/uipreview/RenderServiceFactory.java +++ b/plugins/android/src/org/jetbrains/android/uipreview/RenderServiceFactory.java @@ -35,6 +35,7 @@ import com.intellij.openapi.application.ApplicationNamesInfo; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.DumbService; import com.intellij.openapi.util.Computable; +import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; @@ -75,11 +76,11 @@ public class RenderServiceFactory { return null; } - public RenderResources createResourceResolver(final AndroidFacet facet, - FolderConfiguration config, - ProjectResources projectResources, - String themeName, - boolean isProjectTheme) { + public Pair createResourceResolver(final AndroidFacet facet, + FolderConfiguration config, + ProjectResources projectResources, + String themeName, + boolean isProjectTheme) { final Map> configedProjectRes = projectResources.getConfiguredResources(config); DumbService.getInstance(facet.getModule().getProject()).waitForSmartMode(); @@ -99,16 +100,17 @@ public class RenderServiceFactory { final Map> configedFrameworkRes = myResources.getConfiguredResources(config); final ResourceResolver resolver = ResourceResolver.create(configedProjectRes, configedFrameworkRes, themeName, isProjectTheme); - return new ResourceResolverDecorator(resolver); + return new Pair(new ResourceResolverDecorator(resolver), resolver); } public RenderService createService(RenderResources resources, + RenderResources legacyResources, FolderConfiguration config, float xdpi, float ydpi, IProjectCallback projectCallback, int minSdkVersion) { - return new RenderService(myLibrary, resources, config, xdpi, ydpi, projectCallback, minSdkVersion); + return new RenderService(myLibrary, resources, legacyResources, config, xdpi, ydpi, projectCallback, minSdkVersion); } private RenderServiceFactory(@NotNull Map> enumMap) { diff --git a/plugins/android/src/org/jetbrains/android/uipreview/RenderUtil.java b/plugins/android/src/org/jetbrains/android/uipreview/RenderUtil.java index 292dd52de766..dc67b71849e8 100644 --- a/plugins/android/src/org/jetbrains/android/uipreview/RenderUtil.java +++ b/plugins/android/src/org/jetbrains/android/uipreview/RenderUtil.java @@ -116,9 +116,9 @@ public class RenderUtil { LOG.debug(e); } - final RenderResources resolver = + final Pair pair = factory.createResourceResolver(facet, config, projectResources, theme.getName(), theme.isProjectTheme()); - final RenderService renderService = factory.createService(resolver, config, xdpi, ydpi, callback, minSdkVersion); + final RenderService renderService = factory.createService(pair.getFirst(), pair.getSecond(), config, xdpi, ydpi, callback, minSdkVersion); try { return renderService.createRenderSession(layoutXmlText, getAppLabelToShow(facet)); @@ -192,9 +192,9 @@ public class RenderUtil { rClassName = e.getClassName(); } - final RenderResources resolver = + final Pair pair = factory.createResourceResolver(facet, config, projectResources, theme.getName(), theme.isProjectTheme()); - final RenderService renderService = factory.createService(resolver, config, xdpi, ydpi, callback, minSdkVersion); + final RenderService renderService = factory.createService(pair.getFirst(), pair.getSecond(), config, xdpi, ydpi, callback, minSdkVersion); final RenderSession session; try {