Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +0 −56 Original line number Diff line number Diff line Loading @@ -496,8 +496,6 @@ public class NavigationBarView extends LinearLayout { getImeSwitchButton().setOnClickListener(mImeSwitcherClickListener); updateRTLOrder(); try { WindowManagerGlobal.getWindowManagerService().registerDockedStackListener(new Stub() { @Override Loading Loading @@ -590,7 +588,6 @@ public class NavigationBarView extends LinearLayout { protected void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); boolean uiCarModeChanged = updateCarMode(newConfig); updateRTLOrder(); updateTaskSwitchHelper(); if (uiCarModeChanged) { // uiMode changed either from carmode or to carmode. Loading Loading @@ -618,59 +615,6 @@ public class NavigationBarView extends LinearLayout { return uiCarModeChanged; } /** * In landscape, the LinearLayout is not auto mirrored since it is vertical. Therefore we * have to do it manually */ private void updateRTLOrder() { boolean isLayoutRtl = getResources().getConfiguration() .getLayoutDirection() == LAYOUT_DIRECTION_RTL; if (mIsLayoutRtl != isLayoutRtl) { // We swap all children of the 90 and 270 degree layouts, since they are vertical View rotation90 = mRotatedViews[Surface.ROTATION_90]; swapChildrenOrderIfVertical(rotation90); View rotation270 = mRotatedViews[Surface.ROTATION_270]; if (rotation90 != rotation270) { swapChildrenOrderIfVertical(rotation270); } mIsLayoutRtl = isLayoutRtl; } } /** * Swaps the children order of a LinearLayout if it's orientation is Vertical * * @param group The LinearLayout to swap the children from. */ private void swapChildrenOrderIfVertical(View group) { if (group instanceof LinearLayout) { LinearLayout linearLayout = (LinearLayout) group; if (linearLayout.getOrientation() == VERTICAL) { if ((linearLayout.getGravity() & Gravity.TOP) != 0) { linearLayout.setGravity(Gravity.BOTTOM); } else if ((linearLayout.getGravity() & Gravity.BOTTOM) != 0) { linearLayout.setGravity(Gravity.TOP); } int childCount = linearLayout.getChildCount(); ArrayList<View> childList = new ArrayList<>(childCount); for (int i = 0; i < childCount; i++) { childList.add(linearLayout.getChildAt(i)); } linearLayout.removeAllViews(); for (int i = childCount - 1; i >= 0; i--) { linearLayout.addView(childList.get(i)); } } } else if (group instanceof ViewGroup) { ViewGroup viewGroup = (ViewGroup) group; for (int i = 0; i < viewGroup.getChildCount(); i++) { swapChildrenOrderIfVertical(viewGroup.getChildAt(i)); } } } /* @Override protected void onLayout (boolean changed, int left, int top, int right, int bottom) { Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/ReverseLinearLayout.java +50 −2 Original line number Diff line number Diff line Loading @@ -16,32 +16,80 @@ package com.android.systemui.statusbar.phone; import android.annotation.Nullable; import android.content.Context; import android.content.res.Configuration; import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; import java.util.ArrayList; /** * Automatically reverses the order of children as they are added. * Also reverse the width and height values of layout params */ public class ReverseLinearLayout extends LinearLayout { private boolean mIsLayoutRtl; public ReverseLinearLayout(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } @Override protected void onFinishInflate() { super.onFinishInflate(); mIsLayoutRtl = getResources().getConfiguration() .getLayoutDirection() == LAYOUT_DIRECTION_RTL; } @Override public void addView(View child) { reversParams(child.getLayoutParams()); if (mIsLayoutRtl) { super.addView(child); } else { super.addView(child, 0); } } @Override public void addView(View child, ViewGroup.LayoutParams params) { reversParams(params); if (mIsLayoutRtl) { super.addView(child, params); } else { super.addView(child, 0, params); } } @Override protected void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); updateRTLOrder(); } /** * In landscape, the LinearLayout is not auto mirrored since it is vertical. Therefore we * have to do it manually */ private void updateRTLOrder() { boolean isLayoutRtl = getResources().getConfiguration() .getLayoutDirection() == LAYOUT_DIRECTION_RTL; if (mIsLayoutRtl != isLayoutRtl) { // RTL changed, swap the order of all views. int childCount = getChildCount(); ArrayList<View> childList = new ArrayList<>(childCount); for (int i = 0; i < childCount; i++) { childList.add(getChildAt(i)); } removeAllViews(); for (int i = childCount - 1; i >= 0; i--) { super.addView(childList.get(i)); } mIsLayoutRtl = isLayoutRtl; } } private void reversParams(ViewGroup.LayoutParams params) { if (params == null) { Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +0 −56 Original line number Diff line number Diff line Loading @@ -496,8 +496,6 @@ public class NavigationBarView extends LinearLayout { getImeSwitchButton().setOnClickListener(mImeSwitcherClickListener); updateRTLOrder(); try { WindowManagerGlobal.getWindowManagerService().registerDockedStackListener(new Stub() { @Override Loading Loading @@ -590,7 +588,6 @@ public class NavigationBarView extends LinearLayout { protected void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); boolean uiCarModeChanged = updateCarMode(newConfig); updateRTLOrder(); updateTaskSwitchHelper(); if (uiCarModeChanged) { // uiMode changed either from carmode or to carmode. Loading Loading @@ -618,59 +615,6 @@ public class NavigationBarView extends LinearLayout { return uiCarModeChanged; } /** * In landscape, the LinearLayout is not auto mirrored since it is vertical. Therefore we * have to do it manually */ private void updateRTLOrder() { boolean isLayoutRtl = getResources().getConfiguration() .getLayoutDirection() == LAYOUT_DIRECTION_RTL; if (mIsLayoutRtl != isLayoutRtl) { // We swap all children of the 90 and 270 degree layouts, since they are vertical View rotation90 = mRotatedViews[Surface.ROTATION_90]; swapChildrenOrderIfVertical(rotation90); View rotation270 = mRotatedViews[Surface.ROTATION_270]; if (rotation90 != rotation270) { swapChildrenOrderIfVertical(rotation270); } mIsLayoutRtl = isLayoutRtl; } } /** * Swaps the children order of a LinearLayout if it's orientation is Vertical * * @param group The LinearLayout to swap the children from. */ private void swapChildrenOrderIfVertical(View group) { if (group instanceof LinearLayout) { LinearLayout linearLayout = (LinearLayout) group; if (linearLayout.getOrientation() == VERTICAL) { if ((linearLayout.getGravity() & Gravity.TOP) != 0) { linearLayout.setGravity(Gravity.BOTTOM); } else if ((linearLayout.getGravity() & Gravity.BOTTOM) != 0) { linearLayout.setGravity(Gravity.TOP); } int childCount = linearLayout.getChildCount(); ArrayList<View> childList = new ArrayList<>(childCount); for (int i = 0; i < childCount; i++) { childList.add(linearLayout.getChildAt(i)); } linearLayout.removeAllViews(); for (int i = childCount - 1; i >= 0; i--) { linearLayout.addView(childList.get(i)); } } } else if (group instanceof ViewGroup) { ViewGroup viewGroup = (ViewGroup) group; for (int i = 0; i < viewGroup.getChildCount(); i++) { swapChildrenOrderIfVertical(viewGroup.getChildAt(i)); } } } /* @Override protected void onLayout (boolean changed, int left, int top, int right, int bottom) { Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/ReverseLinearLayout.java +50 −2 Original line number Diff line number Diff line Loading @@ -16,32 +16,80 @@ package com.android.systemui.statusbar.phone; import android.annotation.Nullable; import android.content.Context; import android.content.res.Configuration; import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; import java.util.ArrayList; /** * Automatically reverses the order of children as they are added. * Also reverse the width and height values of layout params */ public class ReverseLinearLayout extends LinearLayout { private boolean mIsLayoutRtl; public ReverseLinearLayout(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } @Override protected void onFinishInflate() { super.onFinishInflate(); mIsLayoutRtl = getResources().getConfiguration() .getLayoutDirection() == LAYOUT_DIRECTION_RTL; } @Override public void addView(View child) { reversParams(child.getLayoutParams()); if (mIsLayoutRtl) { super.addView(child); } else { super.addView(child, 0); } } @Override public void addView(View child, ViewGroup.LayoutParams params) { reversParams(params); if (mIsLayoutRtl) { super.addView(child, params); } else { super.addView(child, 0, params); } } @Override protected void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); updateRTLOrder(); } /** * In landscape, the LinearLayout is not auto mirrored since it is vertical. Therefore we * have to do it manually */ private void updateRTLOrder() { boolean isLayoutRtl = getResources().getConfiguration() .getLayoutDirection() == LAYOUT_DIRECTION_RTL; if (mIsLayoutRtl != isLayoutRtl) { // RTL changed, swap the order of all views. int childCount = getChildCount(); ArrayList<View> childList = new ArrayList<>(childCount); for (int i = 0; i < childCount; i++) { childList.add(getChildAt(i)); } removeAllViews(); for (int i = childCount - 1; i >= 0; i--) { super.addView(childList.get(i)); } mIsLayoutRtl = isLayoutRtl; } } private void reversParams(ViewGroup.LayoutParams params) { if (params == null) { Loading