import com.android.layoutlib.api.LayoutScene;
import com.android.layoutlib.api.SceneParams;
import com.android.layoutlib.api.SceneResult;
+import com.android.layoutlib.api.SceneParams.RenderingMode;
import com.android.sdklib.IAndroidTarget;
import com.android.sdklib.SdkConstants;
import com.android.sdkuilib.internal.widgets.ResolutionChooserDialog;
UiElementPullParser parser = new UiElementPullParser(model,
mUseExplodeMode, explodeNodes, density, xdpi, iProject);
+ RenderingMode renderingMode = RenderingMode.NORMAL;
+ if (mClippingButton.getSelection() == false) {
+ renderingMode = RenderingMode.FULL_EXPAND;
+ } else {
+ // FIXME set the rendering mode using ViewRule or something.
+ List<UiElementNode> children = model.getUiChildren();
+ if (children.size() > 0 &&
+ children.get(0).getDescriptor().getXmlLocalName().equals("ScrollView")) {
+ renderingMode = RenderingMode.V_SCROLL;
+ }
+ }
+
SceneParams params = new SceneParams(
parser,
iProject /* projectKey */,
- width, height, !mClippingButton.getSelection(),
+ width, height,
+ renderingMode,
density, xdpi, ydpi,
theme, isProjectTheme,
configuredProjectRes, frameworkResources, mProjectCallback,
import com.android.ide.eclipse.adt.internal.resources.manager.ResourceManager;
import com.android.ide.eclipse.adt.internal.sdk.AndroidTargetData;
import com.android.ide.eclipse.tests.SdkTestCase;
-import com.android.layoutlib.api.ILayoutResult;
import com.android.layoutlib.api.IProjectCallback;
import com.android.layoutlib.api.IResourceValue;
import com.android.layoutlib.api.IXmlPullParser;
import com.android.layoutlib.api.LayoutScene;
import com.android.layoutlib.api.SceneParams;
import com.android.layoutlib.api.SceneResult;
-import com.android.layoutlib.api.SceneResult.LayoutStatus;
+import com.android.layoutlib.api.SceneParams.RenderingMode;
import com.android.sdklib.IAndroidTarget;
import com.android.sdklib.SdkConstants;
import com.android.sdklib.io.FolderWrapper;
null /*projectKey*/,
320,
480,
- false, //renderFullSize
+ RenderingMode.NORMAL,
160, //density
160, //xdpi
160, // ydpi
import com.android.layoutlib.api.SceneResult;
import com.android.layoutlib.api.ViewInfo;
import com.android.layoutlib.api.ILayoutResult.ILayoutViewInfo;
+import com.android.layoutlib.api.SceneParams.RenderingMode;
import java.lang.reflect.Field;
import java.util.ArrayList;
// Final ILayoutBridge API added support for "render full height"
result = mBridge.computeLayout(
params.getLayoutDescription(), params.getProjectKey(),
- params.getScreenWidth(), params.getScreenHeight(), params.getRenderFullSize(),
+ params.getScreenWidth(), params.getScreenHeight(),
+ params.getRenderingMode() == RenderingMode.FULL_EXPAND ? true : false,
params.getDensity(), params.getXdpi(), params.getYdpi(),
params.getThemeName(), params.getIsProjectTheme(),
params.getProjectResources(), params.getFrameworkResources(),
public class SceneParams {
+ public static enum RenderingMode {
+ NORMAL(false, false),
+ V_SCROLL(false, true),
+ H_SCROLL(true, false),
+ FULL_EXPAND(true, true);
+
+ private final boolean mHorizExpand;
+ private final boolean mVertExpand;
+
+ private RenderingMode(boolean horizExpand, boolean vertExpand) {
+ mHorizExpand = horizExpand;
+ mVertExpand = vertExpand;
+ }
+
+ public boolean isHorizExpand() {
+ return mHorizExpand;
+ }
+
+ public boolean isVertExpand() {
+ return mVertExpand;
+ }
+ }
+
private IXmlPullParser mLayoutDescription;
private Object mProjectKey;
private int mScreenWidth;
private int mScreenHeight;
- private boolean mRenderFullSize;
+ private RenderingMode mRenderingMode;
private int mDensity;
private float mXdpi;
private float mYdpi;
* @param projectKey An Object identifying the project. This is used for the cache mechanism.
* @param screenWidth the screen width
* @param screenHeight the screen height
- * @param renderFullSize if true, the rendering will render the full size needed by the
- * layout. This size is never smaller than <var>screenWidth</var> x <var>screenHeight</var>.
+ * @param renderingMode The rendering mode.
* @param density the density factor for the screen.
* @param xdpi the screen actual dpi in X
* @param ydpi the screen actual dpi in Y
*/
public SceneParams(IXmlPullParser layoutDescription,
Object projectKey,
- int screenWidth, int screenHeight, boolean renderFullSize,
+ int screenWidth, int screenHeight, RenderingMode renderingMode,
int density, float xdpi, float ydpi,
String themeName, boolean isProjectTheme,
Map<String, Map<String, IResourceValue>> projectResources,
mProjectKey = projectKey;
mScreenWidth = screenWidth;
mScreenHeight = screenHeight;
- mRenderFullSize = renderFullSize;
+ mRenderingMode = renderingMode;
mDensity = density;
mXdpi = xdpi;
mYdpi = ydpi;
mProjectKey = params.mProjectKey;
mScreenWidth = params.mScreenWidth;
mScreenHeight = params.mScreenHeight;
- mRenderFullSize = params.mRenderFullSize;
+ mRenderingMode = params.mRenderingMode;
mDensity = params.mDensity;
mXdpi = params.mXdpi;
mYdpi = params.mYdpi;
return mScreenHeight;
}
- public boolean getRenderFullSize() {
- return mRenderFullSize;
+ public RenderingMode getRenderingMode() {
+ return mRenderingMode;
}
public int getDensity() {