diff options
5 files changed, 36 insertions, 58 deletions
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index fe67808f6cb0..987d1fb07157 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -104,9 +104,6 @@ <dimen name="navigation_key_padding">0dp</dimen> - <dimen name="navigation_key_width_sw600dp_land">162dp</dimen> - <dimen name="navigation_key_padding_sw600dp_land">42dp</dimen> - <!-- The width of the view containing the menu/ime navigation bar icons --> <dimen name="navigation_extra_key_width">36dp</dimen> diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ButtonDispatcher.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ButtonDispatcher.java index 1dbea163e9be..379e7a487f4f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ButtonDispatcher.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ButtonDispatcher.java @@ -40,6 +40,7 @@ public class ButtonDispatcher { private int mImageResource = -1; private Drawable mImageDrawable; private View mCurrentView; + private boolean mVertical; public ButtonDispatcher(int id) { mId = id; @@ -49,13 +50,6 @@ public class ButtonDispatcher { mViews.clear(); } - void addView(View view, boolean landscape) { - addView(view); - if (view instanceof ButtonInterface) { - ((ButtonInterface) view).setLandscape(landscape); - } - } - void addView(View view) { mViews.add(view); view.setOnClickListener(mClickListener); @@ -75,6 +69,10 @@ public class ButtonDispatcher { } else if (mImageDrawable != null) { ((ButtonInterface) view).setImageDrawable(mImageDrawable); } + + if (view instanceof ButtonInterface) { + ((ButtonInterface) view).setVertical(mVertical); + } } public int getId() { @@ -186,12 +184,13 @@ public class ButtonDispatcher { } } - public void setLandscape(boolean landscape) { + public void setVertical(boolean vertical) { + mVertical = vertical; final int N = mViews.size(); for (int i = 0; i < N; i++) { final View view = mViews.get(i); if (view instanceof ButtonInterface) { - ((ButtonInterface) view).setLandscape(landscape); + ((ButtonInterface) view).setVertical(vertical); } } } @@ -206,7 +205,7 @@ public class ButtonDispatcher { void abortCurrentGesture(); - void setLandscape(boolean landscape); + void setVertical(boolean vertical); void setCarMode(boolean carMode); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java index 06c8b685ff63..59d12eaa13ad 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java @@ -17,12 +17,14 @@ package com.android.systemui.statusbar.phone; import android.annotation.Nullable; import android.content.Context; import android.content.res.Configuration; -import android.content.res.Resources; import android.util.AttributeSet; import android.util.SparseArray; +import android.view.Display; +import android.view.Display.Mode; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.view.WindowManager; import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.Space; @@ -63,12 +65,13 @@ public class NavigationBarInflaterView extends FrameLayout implements TunerServi protected FrameLayout mRot0; protected FrameLayout mRot90; + private boolean isRot0Landscape; private SparseArray<ButtonDispatcher> mButtonDispatchers; private String mCurrentLayout; - private View mLastRot0; - private View mLastRot90; + private View mLastPortrait; + private View mLastLandscape; private boolean mAlternativeOrder; @@ -76,6 +79,10 @@ public class NavigationBarInflaterView extends FrameLayout implements TunerServi super(context, attrs); mDensity = context.getResources().getConfiguration().densityDpi; createInflaters(); + Display display = ((WindowManager) + context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); + Mode displayMode = display.getMode(); + isRot0Landscape = displayMode.getPhysicalWidth() > displayMode.getPhysicalHeight(); } private void createInflaters() { @@ -204,17 +211,17 @@ public class NavigationBarInflaterView extends FrameLayout implements TunerServi String[] center = sets[1].split(BUTTON_SEPARATOR); String[] end = sets[2].split(BUTTON_SEPARATOR); // Inflate these in start to end order or accessibility traversal will be messed up. - inflateButtons(start, (ViewGroup) mRot0.findViewById(R.id.ends_group), false); - inflateButtons(start, (ViewGroup) mRot90.findViewById(R.id.ends_group), true); + inflateButtons(start, (ViewGroup) mRot0.findViewById(R.id.ends_group), isRot0Landscape); + inflateButtons(start, (ViewGroup) mRot90.findViewById(R.id.ends_group), !isRot0Landscape); - inflateButtons(center, (ViewGroup) mRot0.findViewById(R.id.center_group), false); - inflateButtons(center, (ViewGroup) mRot90.findViewById(R.id.center_group), true); + inflateButtons(center, (ViewGroup) mRot0.findViewById(R.id.center_group), isRot0Landscape); + inflateButtons(center, (ViewGroup) mRot90.findViewById(R.id.center_group), !isRot0Landscape); addGravitySpacer((LinearLayout) mRot0.findViewById(R.id.ends_group)); addGravitySpacer((LinearLayout) mRot90.findViewById(R.id.ends_group)); - inflateButtons(end, (ViewGroup) mRot0.findViewById(R.id.ends_group), false); - inflateButtons(end, (ViewGroup) mRot90.findViewById(R.id.ends_group), true); + inflateButtons(end, (ViewGroup) mRot0.findViewById(R.id.ends_group), isRot0Landscape); + inflateButtons(end, (ViewGroup) mRot90.findViewById(R.id.ends_group), !isRot0Landscape); } private void addGravitySpacer(LinearLayout layout) { @@ -223,7 +230,7 @@ public class NavigationBarInflaterView extends FrameLayout implements TunerServi private void inflateButtons(String[] buttons, ViewGroup parent, boolean landscape) { for (int i = 0; i < buttons.length; i++) { - inflateButton(buttons[i], parent, landscape, i); + inflateButton(buttons[i], parent, landscape); } } @@ -236,27 +243,17 @@ public class NavigationBarInflaterView extends FrameLayout implements TunerServi } @Nullable - protected View inflateButton(String buttonSpec, ViewGroup parent, boolean landscape, - int indexInParent) { + protected View inflateButton(String buttonSpec, ViewGroup parent, boolean landscape) { LayoutInflater inflater = landscape ? mLandscapeInflater : mLayoutInflater; float size = extractSize(buttonSpec); String button = extractButton(buttonSpec); View v = null; if (HOME.equals(button)) { v = inflater.inflate(R.layout.home, parent, false); - if (landscape && isSw600Dp()) { - setupLandButton(v); - } } else if (BACK.equals(button)) { v = inflater.inflate(R.layout.back, parent, false); - if (landscape && isSw600Dp()) { - setupLandButton(v); - } } else if (RECENT.equals(button)) { v = inflater.inflate(R.layout.recent_apps, parent, false); - if (landscape && isSw600Dp()) { - setupLandButton(v); - } } else if (MENU_IME.equals(button)) { v = inflater.inflate(R.layout.menu_ime, parent, false); } else if (NAVSPACE.equals(button)) { @@ -280,15 +277,15 @@ public class NavigationBarInflaterView extends FrameLayout implements TunerServi params.width = (int) (params.width * size); } parent.addView(v); - addToDispatchers(v, landscape); - View lastView = landscape ? mLastRot90 : mLastRot0; + addToDispatchers(v); + View lastView = landscape ? mLastLandscape : mLastPortrait; if (lastView != null) { v.setAccessibilityTraversalAfter(lastView.getId()); } if (landscape) { - mLastRot90 = v; + mLastLandscape = v; } else { - mLastRot0 = v; + mLastPortrait = v; } return v; } @@ -327,37 +324,22 @@ public class NavigationBarInflaterView extends FrameLayout implements TunerServi return buttonSpec.substring(0, buttonSpec.indexOf(SIZE_MOD_START)); } - private void addToDispatchers(View v, boolean landscape) { + private void addToDispatchers(View v) { if (mButtonDispatchers != null) { final int indexOfKey = mButtonDispatchers.indexOfKey(v.getId()); if (indexOfKey >= 0) { - mButtonDispatchers.valueAt(indexOfKey).addView(v, landscape); + mButtonDispatchers.valueAt(indexOfKey).addView(v); } else if (v instanceof ViewGroup) { final ViewGroup viewGroup = (ViewGroup)v; final int N = viewGroup.getChildCount(); for (int i = 0; i < N; i++) { - addToDispatchers(viewGroup.getChildAt(i), landscape); + addToDispatchers(viewGroup.getChildAt(i)); } } } } - private boolean isSw600Dp() { - Configuration configuration = mContext.getResources().getConfiguration(); - return (configuration.smallestScreenWidthDp >= 600); - } - /** - * This manually sets the width of sw600dp landscape buttons because despite - * overriding the configuration from the overridden resources aren't loaded currently. - */ - private void setupLandButton(View v) { - Resources res = mContext.getResources(); - v.getLayoutParams().width = res.getDimensionPixelOffset( - R.dimen.navigation_key_width_sw600dp_land); - int padding = res.getDimensionPixelOffset(R.dimen.navigation_key_padding_sw600dp_land); - v.setPadding(padding, v.getPaddingTop(), padding, v.getPaddingBottom()); - } private void clearViews() { if (mButtonDispatchers != null) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java index a0d1b4203557..245d4da2e43f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java @@ -579,7 +579,7 @@ public class NavigationBarView extends LinearLayout { updateTaskSwitchHelper(); setNavigationIconHints(mNavigationIconHints, true); - getHomeButton().setLandscape(mVertical); + getHomeButton().setVertical(mVertical); } private void updateTaskSwitchHelper() { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java index e6066aaa4c31..b8018bda76de 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java @@ -275,7 +275,7 @@ public class KeyButtonView extends ImageView implements ButtonDispatcher.ButtonI } @Override - public void setLandscape(boolean landscape) { + public void setVertical(boolean vertical) { //no op } |