/** * Adds a simulated display. * * @param qualifiersStr the {@link Qualifiers} string representing characteristics of the new * display. * @return the new display's ID */ public static int addDisplay(String qualifiersStr) { return getShadowDisplayManagerGlobal().addDisplay(createDisplayInfo(qualifiersStr, null)); }
private static DisplayInfo createDisplayInfo(String qualifiersStr, DisplayInfo baseDisplayInfo) { Configuration configuration = new Configuration(); DisplayMetrics displayMetrics = new DisplayMetrics(); if (qualifiersStr.startsWith("+") && baseDisplayInfo != null) { configuration.orientation = (baseDisplayInfo.rotation == Surface.ROTATION_0 || baseDisplayInfo.rotation == Surface.ROTATION_180) ? Configuration.ORIENTATION_PORTRAIT : Configuration.ORIENTATION_LANDSCAPE; configuration.screenWidthDp = baseDisplayInfo.logicalWidth * DisplayMetrics.DENSITY_DEFAULT / baseDisplayInfo.logicalDensityDpi; configuration.screenHeightDp = baseDisplayInfo.logicalHeight * DisplayMetrics.DENSITY_DEFAULT / baseDisplayInfo.logicalDensityDpi; configuration.densityDpi = baseDisplayInfo.logicalDensityDpi; displayMetrics.densityDpi = baseDisplayInfo.logicalDensityDpi; displayMetrics.density = baseDisplayInfo.logicalDensityDpi * DisplayMetrics.DENSITY_DEFAULT_SCALE; } Bootstrap.applyQualifiers(qualifiersStr, RuntimeEnvironment.getApiLevel(), configuration, displayMetrics); return createDisplayInfo(configuration, displayMetrics); }
/** internal only */ public static void configureDefaultDisplay(Configuration configuration, DisplayMetrics displayMetrics) { ShadowDisplayManagerGlobal shadowDisplayManagerGlobal = getShadowDisplayManagerGlobal(); if (DisplayManagerGlobal.getInstance().getDisplayIds().length != 0) { throw new IllegalStateException("this method should only be called by Robolectric"); } shadowDisplayManagerGlobal.addDisplay(createDisplayInfo(configuration, displayMetrics)); }
/** * Changes properties of a simulated display. If `qualifiersStr` starts with a plus (`+`) sign, * the display's previous configuration is modified with the given qualifiers; otherwise defaults * are applied as described [here](http://robolectric.org/device-configuration/). * * * @param displayId the display id to change * @param qualifiersStr the {@link Qualifiers} string representing characteristics of the new * display */ public static void changeDisplay(int displayId, String qualifiersStr) { DisplayInfo baseDisplayInfo = DisplayManagerGlobal.getInstance().getDisplayInfo(displayId); DisplayInfo displayInfo = createDisplayInfo(qualifiersStr, baseDisplayInfo); getShadowDisplayManagerGlobal().changeDisplay(displayId, displayInfo); }
/** * Adds a simulated display. * * @param qualifiersStr the {@link Qualifiers} string representing characteristics of the new * display. * @return the new display's ID */ public static int addDisplay(String qualifiersStr) { return getShadowDisplayManagerGlobal().addDisplay(createDisplayInfo(qualifiersStr, null)); }
/** internal only */ public static void configureDefaultDisplay(Configuration configuration, DisplayMetrics displayMetrics) { ShadowDisplayManagerGlobal shadowDisplayManagerGlobal = getShadowDisplayManagerGlobal(); if (DisplayManagerGlobal.getInstance().getDisplayIds().length != 0) { throw new IllegalStateException("this method should only be called by Robolectric"); } shadowDisplayManagerGlobal.addDisplay(createDisplayInfo(configuration, displayMetrics)); }
private static DisplayInfo createDisplayInfo(String qualifiersStr, DisplayInfo baseDisplayInfo) { Configuration configuration = new Configuration(); DisplayMetrics displayMetrics = new DisplayMetrics(); if (qualifiersStr.startsWith("+") && baseDisplayInfo != null) { configuration.orientation = (baseDisplayInfo.rotation == Surface.ROTATION_0 || baseDisplayInfo.rotation == Surface.ROTATION_180) ? Configuration.ORIENTATION_PORTRAIT : Configuration.ORIENTATION_LANDSCAPE; configuration.screenWidthDp = baseDisplayInfo.logicalWidth * DisplayMetrics.DENSITY_DEFAULT / baseDisplayInfo.logicalDensityDpi; configuration.screenHeightDp = baseDisplayInfo.logicalHeight * DisplayMetrics.DENSITY_DEFAULT / baseDisplayInfo.logicalDensityDpi; configuration.densityDpi = baseDisplayInfo.logicalDensityDpi; displayMetrics.densityDpi = baseDisplayInfo.logicalDensityDpi; displayMetrics.density = baseDisplayInfo.logicalDensityDpi * DisplayMetrics.DENSITY_DEFAULT_SCALE; } Bootstrap.applyQualifiers(qualifiersStr, RuntimeEnvironment.getApiLevel(), configuration, displayMetrics); return createDisplayInfo(configuration, displayMetrics); }
/** * Changes properties of a simulated display. If `qualifiersStr` starts with a plus (`+`) sign, * the display's previous configuration is modified with the given qualifiers; otherwise defaults * are applied as described [here](http://robolectric.org/device-configuration/). * * * @param displayId the display id to change * @param qualifiersStr the {@link Qualifiers} string representing characteristics of the new * display */ public static void changeDisplay(int displayId, String qualifiersStr) { DisplayInfo baseDisplayInfo = DisplayManagerGlobal.getInstance().getDisplayInfo(displayId); DisplayInfo displayInfo = createDisplayInfo(qualifiersStr, baseDisplayInfo); getShadowDisplayManagerGlobal().changeDisplay(displayId, displayInfo); }