diff --git a/tools/layoutlib/bridge/resources/bars/hdpi/stat_sys_battery_100.png b/tools/layoutlib/bridge/resources/bars/hdpi/stat_sys_battery_100.png deleted file mode 100644 index f17189a0645d1..0000000000000 Binary files a/tools/layoutlib/bridge/resources/bars/hdpi/stat_sys_battery_100.png and /dev/null differ diff --git a/tools/layoutlib/bridge/resources/bars/mdpi/stat_sys_battery_100.png b/tools/layoutlib/bridge/resources/bars/mdpi/stat_sys_battery_100.png deleted file mode 100644 index 2a9757dea17ee..0000000000000 Binary files a/tools/layoutlib/bridge/resources/bars/mdpi/stat_sys_battery_100.png and /dev/null differ diff --git a/tools/layoutlib/bridge/resources/bars/navigation_bar.xml b/tools/layoutlib/bridge/resources/bars/navigation_bar.xml index 599ca08bf02cb..79920a1ad8970 100644 --- a/tools/layoutlib/bridge/resources/bars/navigation_bar.xml +++ b/tools/layoutlib/bridge/resources/bars/navigation_bar.xml @@ -1,20 +1,29 @@ - + + - - - + + + android:layout_width="wrap_content" + android:scaleType="centerInside"/> + diff --git a/tools/layoutlib/bridge/resources/bars/v21/hdpi/ic_sysbar_back.png b/tools/layoutlib/bridge/resources/bars/v21/hdpi/ic_sysbar_back.png index b28624f7f79d3..d2760bb912e2f 100644 Binary files a/tools/layoutlib/bridge/resources/bars/v21/hdpi/ic_sysbar_back.png and b/tools/layoutlib/bridge/resources/bars/v21/hdpi/ic_sysbar_back.png differ diff --git a/tools/layoutlib/bridge/resources/bars/v21/hdpi/ic_sysbar_home.png b/tools/layoutlib/bridge/resources/bars/v21/hdpi/ic_sysbar_home.png index 3f3e288a46e35..df43e21b47d11 100644 Binary files a/tools/layoutlib/bridge/resources/bars/v21/hdpi/ic_sysbar_home.png and b/tools/layoutlib/bridge/resources/bars/v21/hdpi/ic_sysbar_home.png differ diff --git a/tools/layoutlib/bridge/resources/bars/v21/hdpi/ic_sysbar_recent.png b/tools/layoutlib/bridge/resources/bars/v21/hdpi/ic_sysbar_recent.png index 06dcd2079e73f..6fab1d645dff4 100644 Binary files a/tools/layoutlib/bridge/resources/bars/v21/hdpi/ic_sysbar_recent.png and b/tools/layoutlib/bridge/resources/bars/v21/hdpi/ic_sysbar_recent.png differ diff --git a/tools/layoutlib/bridge/resources/bars/v21/ldrtl-hdpi/ic_sysbar_back.png b/tools/layoutlib/bridge/resources/bars/v21/ldrtl-hdpi/ic_sysbar_back.png index e464347cf07d0..2fcfdde08164d 100644 Binary files a/tools/layoutlib/bridge/resources/bars/v21/ldrtl-hdpi/ic_sysbar_back.png and b/tools/layoutlib/bridge/resources/bars/v21/ldrtl-hdpi/ic_sysbar_back.png differ diff --git a/tools/layoutlib/bridge/resources/bars/v21/ldrtl-mdpi/ic_sysbar_back.png b/tools/layoutlib/bridge/resources/bars/v21/ldrtl-mdpi/ic_sysbar_back.png index 1b578a68f322f..48708a5099a83 100644 Binary files a/tools/layoutlib/bridge/resources/bars/v21/ldrtl-mdpi/ic_sysbar_back.png and b/tools/layoutlib/bridge/resources/bars/v21/ldrtl-mdpi/ic_sysbar_back.png differ diff --git a/tools/layoutlib/bridge/resources/bars/v21/ldrtl-xhdpi/ic_sysbar_back.png b/tools/layoutlib/bridge/resources/bars/v21/ldrtl-xhdpi/ic_sysbar_back.png index 373e84a999dba..3d731840a93f6 100644 Binary files a/tools/layoutlib/bridge/resources/bars/v21/ldrtl-xhdpi/ic_sysbar_back.png and b/tools/layoutlib/bridge/resources/bars/v21/ldrtl-xhdpi/ic_sysbar_back.png differ diff --git a/tools/layoutlib/bridge/resources/bars/v21/ldrtl-xxhdpi/ic_sysbar_back.png b/tools/layoutlib/bridge/resources/bars/v21/ldrtl-xxhdpi/ic_sysbar_back.png index 6b19593ea8051..786935d5d185c 100644 Binary files a/tools/layoutlib/bridge/resources/bars/v21/ldrtl-xxhdpi/ic_sysbar_back.png and b/tools/layoutlib/bridge/resources/bars/v21/ldrtl-xxhdpi/ic_sysbar_back.png differ diff --git a/tools/layoutlib/bridge/resources/bars/v21/mdpi/ic_sysbar_back.png b/tools/layoutlib/bridge/resources/bars/v21/mdpi/ic_sysbar_back.png index f878093ab3874..1d8c3af177161 100644 Binary files a/tools/layoutlib/bridge/resources/bars/v21/mdpi/ic_sysbar_back.png and b/tools/layoutlib/bridge/resources/bars/v21/mdpi/ic_sysbar_back.png differ diff --git a/tools/layoutlib/bridge/resources/bars/v21/mdpi/ic_sysbar_home.png b/tools/layoutlib/bridge/resources/bars/v21/mdpi/ic_sysbar_home.png index 8e9583b231bba..66de0ec75ec95 100644 Binary files a/tools/layoutlib/bridge/resources/bars/v21/mdpi/ic_sysbar_home.png and b/tools/layoutlib/bridge/resources/bars/v21/mdpi/ic_sysbar_home.png differ diff --git a/tools/layoutlib/bridge/resources/bars/v21/mdpi/ic_sysbar_recent.png b/tools/layoutlib/bridge/resources/bars/v21/mdpi/ic_sysbar_recent.png index e2a89c3ce8ac8..30c65f51a1288 100644 Binary files a/tools/layoutlib/bridge/resources/bars/v21/mdpi/ic_sysbar_recent.png and b/tools/layoutlib/bridge/resources/bars/v21/mdpi/ic_sysbar_recent.png differ diff --git a/tools/layoutlib/bridge/resources/bars/v21/xhdpi/ic_sysbar_back.png b/tools/layoutlib/bridge/resources/bars/v21/xhdpi/ic_sysbar_back.png index ec2951d3f219d..a3562850ef9cc 100644 Binary files a/tools/layoutlib/bridge/resources/bars/v21/xhdpi/ic_sysbar_back.png and b/tools/layoutlib/bridge/resources/bars/v21/xhdpi/ic_sysbar_back.png differ diff --git a/tools/layoutlib/bridge/resources/bars/v21/xhdpi/ic_sysbar_home.png b/tools/layoutlib/bridge/resources/bars/v21/xhdpi/ic_sysbar_home.png index 254f757743687..ba2d0b2642cec 100644 Binary files a/tools/layoutlib/bridge/resources/bars/v21/xhdpi/ic_sysbar_home.png and b/tools/layoutlib/bridge/resources/bars/v21/xhdpi/ic_sysbar_home.png differ diff --git a/tools/layoutlib/bridge/resources/bars/v21/xhdpi/ic_sysbar_recent.png b/tools/layoutlib/bridge/resources/bars/v21/xhdpi/ic_sysbar_recent.png index 8a8e941303750..94a74b189abfd 100644 Binary files a/tools/layoutlib/bridge/resources/bars/v21/xhdpi/ic_sysbar_recent.png and b/tools/layoutlib/bridge/resources/bars/v21/xhdpi/ic_sysbar_recent.png differ diff --git a/tools/layoutlib/bridge/resources/bars/v21/xxhdpi/ic_sysbar_back.png b/tools/layoutlib/bridge/resources/bars/v21/xxhdpi/ic_sysbar_back.png index 77969b895860d..29da099f6d825 100644 Binary files a/tools/layoutlib/bridge/resources/bars/v21/xxhdpi/ic_sysbar_back.png and b/tools/layoutlib/bridge/resources/bars/v21/xxhdpi/ic_sysbar_back.png differ diff --git a/tools/layoutlib/bridge/resources/bars/v21/xxhdpi/ic_sysbar_home.png b/tools/layoutlib/bridge/resources/bars/v21/xxhdpi/ic_sysbar_home.png index d60229f600b95..59b32f2dd1781 100644 Binary files a/tools/layoutlib/bridge/resources/bars/v21/xxhdpi/ic_sysbar_home.png and b/tools/layoutlib/bridge/resources/bars/v21/xxhdpi/ic_sysbar_home.png differ diff --git a/tools/layoutlib/bridge/resources/bars/v21/xxhdpi/ic_sysbar_recent.png b/tools/layoutlib/bridge/resources/bars/v21/xxhdpi/ic_sysbar_recent.png index a261f850798c6..ba66d27f11993 100644 Binary files a/tools/layoutlib/bridge/resources/bars/v21/xxhdpi/ic_sysbar_recent.png and b/tools/layoutlib/bridge/resources/bars/v21/xxhdpi/ic_sysbar_recent.png differ diff --git a/tools/layoutlib/bridge/resources/bars/xhdpi/stat_sys_battery_100.png b/tools/layoutlib/bridge/resources/bars/xhdpi/stat_sys_battery_100.png deleted file mode 100644 index 555bcd972415d..0000000000000 Binary files a/tools/layoutlib/bridge/resources/bars/xhdpi/stat_sys_battery_100.png and /dev/null differ diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/NavigationBar.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/NavigationBar.java index b543ca61e93c4..c9fa80f00683b 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/NavigationBar.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/NavigationBar.java @@ -22,6 +22,7 @@ import com.android.resources.Density; import android.content.Context; import android.content.pm.ApplicationInfo; import android.util.AttributeSet; +import android.util.DisplayMetrics; import android.view.View; import android.widget.LinearLayout; import android.widget.TextView; @@ -30,6 +31,14 @@ public class NavigationBar extends CustomBar { /** Navigation bar background color attribute name. */ private static final String ATTR_COLOR = "navigationBarColor"; + // These correspond to @dimen/navigation_side_padding in the system ui code. + private static final int PADDING_WIDTH_DEFAULT = 36; + private static final int PADDING_WIDTH_SW360 = 40; + private static final int PADDING_WIDTH_SW400 = 50; + // These corresponds to @dimen/navigation_key_width in the system ui code. + private static final int WIDTH_DEFAULT = 36; + private static final int WIDTH_SW360 = 40; + private static final int WIDTH_SW600 = 48; /** * Constructor to be used when creating the {@link NavigationBar} as a regular control. @@ -43,7 +52,7 @@ public class NavigationBar extends CustomBar { ((BridgeContext) context).getConfiguration().getLayoutDirection() == View.LAYOUT_DIRECTION_RTL, (context.getApplicationInfo().flags & ApplicationInfo.FLAG_SUPPORTS_RTL) != 0, - context.getApplicationInfo().targetSdkVersion); + 0); } public NavigationBar(BridgeContext context, Density density, int orientation, boolean isRtl, @@ -59,19 +68,70 @@ public class NavigationBar extends CustomBar { // We do know the order though. // 0 is a spacer. int back = 1; - int recent = 3; + int recent = 5; if (orientation == LinearLayout.VERTICAL || (isRtl && !rtlEnabled)) { // If RTL is enabled, then layoutlib mirrors the layout for us. - back = 3; + back = 5; recent = 1; } //noinspection SpellCheckingInspection - loadIcon(back, "ic_sysbar_back.png", density, isRtl); + loadIcon(back, "ic_sysbar_back.png", density, isRtl); //noinspection SpellCheckingInspection - loadIcon(2, "ic_sysbar_home.png", density, isRtl); + loadIcon(3, "ic_sysbar_home.png", density, isRtl); //noinspection SpellCheckingInspection loadIcon(recent, "ic_sysbar_recent.png", density, isRtl); + setupNavBar(context, orientation); + } + + private void setupNavBar(BridgeContext context, int orientation) { + View leftPadding = getChildAt(0); + View rightPadding = getChildAt(6); + setSize(context, leftPadding, orientation, getSidePadding(context)); + setSize(context, rightPadding, orientation, getSidePadding(context)); + for (int i = 1; i < 6; i += 2) { + View navButton = getChildAt(i); + setSize(context, navButton, orientation, getWidth(context)); + } + } + + private static void setSize(BridgeContext context, View view, int orientation, int size) { + size *= context.getMetrics().density; + LayoutParams layoutParams = (LayoutParams) view.getLayoutParams(); + if (orientation == HORIZONTAL) { + layoutParams.width = size; + } else { + layoutParams.height = size; + } + view.setLayoutParams(layoutParams); + } + + private static int getSidePadding(BridgeContext context) { + DisplayMetrics metrics = context.getMetrics(); + float sw = metrics.widthPixels > metrics.heightPixels + ? metrics.heightPixels : metrics.widthPixels; + sw /= metrics.density; + if (sw >= 400) { + return PADDING_WIDTH_SW400; + } + if (sw >= 360) { + return PADDING_WIDTH_SW360; + } + return PADDING_WIDTH_DEFAULT; + } + + private static int getWidth(BridgeContext context) { + DisplayMetrics metrics = context.getMetrics(); + float sw = metrics.widthPixels > metrics.heightPixels + ? metrics.heightPixels : metrics.widthPixels; + sw /= metrics.density; + if (sw >= 600) { + return WIDTH_SW600; + } + if (sw >= 360) { + return WIDTH_SW360; + } + return WIDTH_DEFAULT; } @Override diff --git a/tools/layoutlib/bridge/tests/src/com/android/layoutlib/bridge/intensive/setup/ConfigGenerator.java b/tools/layoutlib/bridge/tests/src/com/android/layoutlib/bridge/intensive/setup/ConfigGenerator.java index 68c295f59f237..8e0cec6b550f2 100644 --- a/tools/layoutlib/bridge/tests/src/com/android/layoutlib/bridge/intensive/setup/ConfigGenerator.java +++ b/tools/layoutlib/bridge/tests/src/com/android/layoutlib/bridge/intensive/setup/ConfigGenerator.java @@ -111,6 +111,21 @@ public class ConfigGenerator { .setSoftButtons(true) .setNavigation(Navigation.NONAV); + public static final ConfigGenerator NEXUS_5_LAND = new ConfigGenerator() + .setScreenHeight(1080) + .setScreenWidth(1920) + .setXdpi(445) + .setYdpi(445) + .setOrientation(ScreenOrientation.LANDSCAPE) + .setDensity(Density.XXHIGH) + .setRatio(ScreenRatio.NOTLONG) + .setSize(ScreenSize.NORMAL) + .setKeyboard(Keyboard.NOKEY) + .setTouchScreen(TouchScreen.FINGER) + .setKeyboardState(KeyboardState.SOFT) + .setSoftButtons(true) + .setNavigation(Navigation.NONAV); + private static final String TAG_ATTR = "attr"; private static final String TAG_ENUM = "enum"; private static final String TAG_FLAG = "flag"; diff --git a/tools/layoutlib/bridge/update_nav_icons.sh b/tools/layoutlib/bridge/update_nav_icons.sh new file mode 100755 index 0000000000000..7030d1914e254 --- /dev/null +++ b/tools/layoutlib/bridge/update_nav_icons.sh @@ -0,0 +1,51 @@ +#!/bin/sh + +# copies the navigation bar icons from system ui code to layoutlib. +# to run, simply execute the script. (if not using bash, cd to the dir +# containing this script and then run by ./update_nav_icons.sh) + +# Try to get the location of this script. +if [ -n $BASH ]; then + # see http://stackoverflow.com/a/246128/1546000 + MY_LOCATION=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) + cd $MY_LOCATION +else + # Let's assume script was run from the same dir. + MY_LOCATION=$(pwd) +fi + +# Check mac or linux to get sed argument to enable extended regex. +case $(uname -s) in + Darwin) + EXT_REGEX="-E" + ;; + *) + EXT_REGEX="-r" + ;; +esac + + +FB="frameworks/base" +# frameworks/base relative to current location +FB=$(echo $MY_LOCATION | sed $EXT_REGEX -e "s,.*$FB[^/]*/,," -e "s,[^/]+,..,g") +CURRENT_API=21 # update only if icons change from this api version. +DENSITIES="ldpi mdpi hdpi xhdpi xxhdpi" +ICONS="ic_sysbar_back.png ic_sysbar_home.png ic_sysbar_recent.png" +BARS="./resources/bars/" + +for icon in $ICONS +do + for density in $DENSITIES + do + destination="$BARS/v$CURRENT_API/$density/" + mkdir -p "$destination" # create if not present. + cp -v "$FB/packages/SystemUI/res/drawable-$density/$icon" "$destination" + done + + for density in $DENSITIES + do + destination="$BARS/v$CURRENT_API/ldrtl-$density/" + mkdir -p "$destination" + cp -v "$FB/packages/SystemUI/res/drawable-ldrtl-$density/$icon" "$destination" + done +done