Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java +17 −1 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ import android.widget.LinearLayout; import android.widget.Space; import com.android.systemui.R; import com.android.systemui.SystemUIFactory; import com.android.systemui.statusbar.policy.KeyButtonView; import com.android.systemui.tuner.TunerService; Loading Loading @@ -71,6 +70,8 @@ public class NavigationBarInflaterView extends FrameLayout implements TunerServi private View mLastRot0; private View mLastRot90; private boolean mAlternativeOrder; public NavigationBarInflaterView(Context context, AttributeSet attrs) { super(context, attrs); mDensity = context.getResources().getConfiguration().densityDpi; Loading Loading @@ -114,6 +115,7 @@ public class NavigationBarInflaterView extends FrameLayout implements TunerServi false); mRot90.setId(R.id.rot90); addView(mRot90); updateAlternativeOrder(); if (getParent() instanceof NavigationBarView) { ((NavigationBarView) getParent()).updateRotatedViews(); } Loading Loading @@ -152,6 +154,20 @@ public class NavigationBarInflaterView extends FrameLayout implements TunerServi } } public void setAlternativeOrder(boolean alternativeOrder) { if (alternativeOrder != mAlternativeOrder) { mAlternativeOrder = alternativeOrder; updateAlternativeOrder(); } } private void updateAlternativeOrder() { ((ReverseLinearLayout) mRot90.findViewById(R.id.ends_group)).setAlternativeOrder( mAlternativeOrder); ((ReverseLinearLayout) mRot90.findViewById(R.id.center_group)).setAlternativeOrder( mAlternativeOrder); } private void initiallyFill(ButtonDispatcher buttonDispatcher) { addAll(buttonDispatcher, (ViewGroup) mRot0.findViewById(R.id.ends_group)); addAll(buttonDispatcher, (ViewGroup) mRot0.findViewById(R.id.center_group)); Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +6 −2 Original line number Diff line number Diff line Loading @@ -99,6 +99,8 @@ public class NavigationBarView extends LinearLayout { private final SparseArray<ButtonDispatcher> mButtonDisatchers = new SparseArray<>(); private Configuration mConfiguration; private NavigationBarInflaterView mNavigationInflaterView; private class NavTransitionListener implements TransitionListener { private boolean mBackTransitioning; private boolean mHomeAppearing; Loading Loading @@ -472,9 +474,10 @@ public class NavigationBarView extends LinearLayout { @Override public void onFinishInflate() { mNavigationInflaterView = (NavigationBarInflaterView) findViewById( R.id.navigation_inflater); updateRotatedViews(); ((NavigationBarInflaterView) findViewById(R.id.navigation_inflater)).setButtonDispatchers( mButtonDisatchers); mNavigationInflaterView.setButtonDispatchers(mButtonDisatchers); getImeSwitchButton().setOnClickListener(mImeSwitcherClickListener); Loading Loading @@ -530,6 +533,7 @@ public class NavigationBarView extends LinearLayout { } mCurrentView = mRotatedViews[rot]; mCurrentView.setVisibility(View.VISIBLE); mNavigationInflaterView.setAlternativeOrder(rot == Surface.ROTATION_90); for (int i = 0; i < mButtonDisatchers.size(); i++) { mButtonDisatchers.valueAt(i).setCurrentView(mCurrentView); } Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/ReverseLinearLayout.java +27 −18 Original line number Diff line number Diff line Loading @@ -30,7 +30,11 @@ import java.util.ArrayList; */ public class ReverseLinearLayout extends LinearLayout { private boolean mIsLayoutRtl; /** If true, the layout is reversed vs. a regular linear layout */ private boolean mIsLayoutReverse; /** If true, the layout is opposite to it's natural reversity from the layout direction */ private boolean mIsAlternativeOrder; public ReverseLinearLayout(Context context, @Nullable AttributeSet attrs) { super(context, attrs); Loading @@ -39,45 +43,50 @@ public class ReverseLinearLayout extends LinearLayout { @Override protected void onFinishInflate() { super.onFinishInflate(); mIsLayoutRtl = getResources().getConfiguration() .getLayoutDirection() == LAYOUT_DIRECTION_RTL; updateOrder(); } @Override public void addView(View child) { reversParams(child.getLayoutParams()); if (mIsLayoutRtl) { super.addView(child); } else { if (mIsLayoutReverse) { super.addView(child, 0); } else { super.addView(child); } } @Override public void addView(View child, ViewGroup.LayoutParams params) { reversParams(params); if (mIsLayoutRtl) { super.addView(child, params); } else { if (mIsLayoutReverse) { super.addView(child, 0, params); } else { super.addView(child, params); } } @Override protected void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); updateRTLOrder(); public void onRtlPropertiesChanged(int layoutDirection) { super.onRtlPropertiesChanged(layoutDirection); updateOrder(); } public void setAlternativeOrder(boolean alternative) { mIsAlternativeOrder = alternative; updateOrder(); } /** * 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. private void updateOrder() { boolean isLayoutRtl = getLayoutDirection() == LAYOUT_DIRECTION_RTL; boolean isLayoutReverse = isLayoutRtl ^ mIsAlternativeOrder; if (mIsLayoutReverse != isLayoutReverse) { // reversity changed, swap the order of all views. int childCount = getChildCount(); ArrayList<View> childList = new ArrayList<>(childCount); for (int i = 0; i < childCount; i++) { Loading @@ -87,7 +96,7 @@ public class ReverseLinearLayout extends LinearLayout { for (int i = childCount - 1; i >= 0; i--) { super.addView(childList.get(i)); } mIsLayoutRtl = isLayoutRtl; mIsLayoutReverse = isLayoutReverse; } } Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java +17 −1 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ import android.widget.LinearLayout; import android.widget.Space; import com.android.systemui.R; import com.android.systemui.SystemUIFactory; import com.android.systemui.statusbar.policy.KeyButtonView; import com.android.systemui.tuner.TunerService; Loading Loading @@ -71,6 +70,8 @@ public class NavigationBarInflaterView extends FrameLayout implements TunerServi private View mLastRot0; private View mLastRot90; private boolean mAlternativeOrder; public NavigationBarInflaterView(Context context, AttributeSet attrs) { super(context, attrs); mDensity = context.getResources().getConfiguration().densityDpi; Loading Loading @@ -114,6 +115,7 @@ public class NavigationBarInflaterView extends FrameLayout implements TunerServi false); mRot90.setId(R.id.rot90); addView(mRot90); updateAlternativeOrder(); if (getParent() instanceof NavigationBarView) { ((NavigationBarView) getParent()).updateRotatedViews(); } Loading Loading @@ -152,6 +154,20 @@ public class NavigationBarInflaterView extends FrameLayout implements TunerServi } } public void setAlternativeOrder(boolean alternativeOrder) { if (alternativeOrder != mAlternativeOrder) { mAlternativeOrder = alternativeOrder; updateAlternativeOrder(); } } private void updateAlternativeOrder() { ((ReverseLinearLayout) mRot90.findViewById(R.id.ends_group)).setAlternativeOrder( mAlternativeOrder); ((ReverseLinearLayout) mRot90.findViewById(R.id.center_group)).setAlternativeOrder( mAlternativeOrder); } private void initiallyFill(ButtonDispatcher buttonDispatcher) { addAll(buttonDispatcher, (ViewGroup) mRot0.findViewById(R.id.ends_group)); addAll(buttonDispatcher, (ViewGroup) mRot0.findViewById(R.id.center_group)); Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +6 −2 Original line number Diff line number Diff line Loading @@ -99,6 +99,8 @@ public class NavigationBarView extends LinearLayout { private final SparseArray<ButtonDispatcher> mButtonDisatchers = new SparseArray<>(); private Configuration mConfiguration; private NavigationBarInflaterView mNavigationInflaterView; private class NavTransitionListener implements TransitionListener { private boolean mBackTransitioning; private boolean mHomeAppearing; Loading Loading @@ -472,9 +474,10 @@ public class NavigationBarView extends LinearLayout { @Override public void onFinishInflate() { mNavigationInflaterView = (NavigationBarInflaterView) findViewById( R.id.navigation_inflater); updateRotatedViews(); ((NavigationBarInflaterView) findViewById(R.id.navigation_inflater)).setButtonDispatchers( mButtonDisatchers); mNavigationInflaterView.setButtonDispatchers(mButtonDisatchers); getImeSwitchButton().setOnClickListener(mImeSwitcherClickListener); Loading Loading @@ -530,6 +533,7 @@ public class NavigationBarView extends LinearLayout { } mCurrentView = mRotatedViews[rot]; mCurrentView.setVisibility(View.VISIBLE); mNavigationInflaterView.setAlternativeOrder(rot == Surface.ROTATION_90); for (int i = 0; i < mButtonDisatchers.size(); i++) { mButtonDisatchers.valueAt(i).setCurrentView(mCurrentView); } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/ReverseLinearLayout.java +27 −18 Original line number Diff line number Diff line Loading @@ -30,7 +30,11 @@ import java.util.ArrayList; */ public class ReverseLinearLayout extends LinearLayout { private boolean mIsLayoutRtl; /** If true, the layout is reversed vs. a regular linear layout */ private boolean mIsLayoutReverse; /** If true, the layout is opposite to it's natural reversity from the layout direction */ private boolean mIsAlternativeOrder; public ReverseLinearLayout(Context context, @Nullable AttributeSet attrs) { super(context, attrs); Loading @@ -39,45 +43,50 @@ public class ReverseLinearLayout extends LinearLayout { @Override protected void onFinishInflate() { super.onFinishInflate(); mIsLayoutRtl = getResources().getConfiguration() .getLayoutDirection() == LAYOUT_DIRECTION_RTL; updateOrder(); } @Override public void addView(View child) { reversParams(child.getLayoutParams()); if (mIsLayoutRtl) { super.addView(child); } else { if (mIsLayoutReverse) { super.addView(child, 0); } else { super.addView(child); } } @Override public void addView(View child, ViewGroup.LayoutParams params) { reversParams(params); if (mIsLayoutRtl) { super.addView(child, params); } else { if (mIsLayoutReverse) { super.addView(child, 0, params); } else { super.addView(child, params); } } @Override protected void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); updateRTLOrder(); public void onRtlPropertiesChanged(int layoutDirection) { super.onRtlPropertiesChanged(layoutDirection); updateOrder(); } public void setAlternativeOrder(boolean alternative) { mIsAlternativeOrder = alternative; updateOrder(); } /** * 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. private void updateOrder() { boolean isLayoutRtl = getLayoutDirection() == LAYOUT_DIRECTION_RTL; boolean isLayoutReverse = isLayoutRtl ^ mIsAlternativeOrder; if (mIsLayoutReverse != isLayoutReverse) { // reversity changed, swap the order of all views. int childCount = getChildCount(); ArrayList<View> childList = new ArrayList<>(childCount); for (int i = 0; i < childCount; i++) { Loading @@ -87,7 +96,7 @@ public class ReverseLinearLayout extends LinearLayout { for (int i = childCount - 1; i >= 0; i--) { super.addView(childList.get(i)); } mIsLayoutRtl = isLayoutRtl; mIsLayoutReverse = isLayoutReverse; } } Loading