diff options
author | Danny Epstein <depstein@google.com> | 2020-07-18 12:17:50 -0700 |
---|---|---|
committer | Danny Epstein <depstein@google.com> | 2020-07-18 12:17:50 -0700 |
commit | fcf79e37ad837cdf2c99bf785d0154e66a302e7f (patch) | |
tree | cffcb4541e95c970bb801c0e38fd5d84ec258fc9 /RotaryPlayground/src/com/android/car/rotaryplayground | |
parent | 41af77ce3fcd704f6738f8edf9ffc1de3a7be4d4 (diff) | |
download | tests-fcf79e37ad837cdf2c99bf785d0154e66a302e7f.tar.gz |
Improve tabs in reference app.
For now, don't switch tabs on focus. Select the button for the active
tab and visually indicate the selected button.
Bug: 157241844
Test: manual
Change-Id: I3f99b9a9a2a8c48d33e7852a75b4ecf3483280ba
Diffstat (limited to 'RotaryPlayground/src/com/android/car/rotaryplayground')
-rw-r--r-- | RotaryPlayground/src/com/android/car/rotaryplayground/RotaryMenu.java | 108 |
1 files changed, 50 insertions, 58 deletions
diff --git a/RotaryPlayground/src/com/android/car/rotaryplayground/RotaryMenu.java b/RotaryPlayground/src/com/android/car/rotaryplayground/RotaryMenu.java index c87fe1b..fd3baa8 100644 --- a/RotaryPlayground/src/com/android/car/rotaryplayground/RotaryMenu.java +++ b/RotaryPlayground/src/com/android/car/rotaryplayground/RotaryMenu.java @@ -38,64 +38,68 @@ public class RotaryMenu extends Fragment { private Fragment mNotificationFragment = null; private Fragment mScrollFragment = null; - private Button mCardButton; - private Button mGridButton; - private Button mDirectManipulationButton; - private Button mSysUiDirectManipulationButton; - private Button mNotificationButton; - private Button mScrollButton; - @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.rotary_menu, container, false); - mCardButton = view.findViewById(R.id.cards); - mCardButton.setOnFocusChangeListener((v, hasFocus) -> showRotaryCards(hasFocus)); - mCardButton.setOnClickListener(v -> showRotaryCards(/* hasFocus= */ true)); - - mGridButton = view.findViewById(R.id.grid); - mGridButton.setOnFocusChangeListener((v, hasFocus) -> showGridExample(hasFocus)); - mGridButton.setOnClickListener(v -> showGridExample(/* hasFocus= */ true)); - - mDirectManipulationButton = view.findViewById(R.id.direct_manipulation); - mDirectManipulationButton.setOnFocusChangeListener( - (v, hasFocus) -> showDirectManipulationExamples(hasFocus)); - mDirectManipulationButton.setOnClickListener( - (v -> showDirectManipulationExamples(/* hasFocus= */ true))); - - mSysUiDirectManipulationButton = view.findViewById(R.id.sys_ui_direct_manipulation); - mSysUiDirectManipulationButton.setOnFocusChangeListener( - (v, hasFocus) -> showSysUiDirectManipulationExamples(hasFocus)); - mSysUiDirectManipulationButton.setOnClickListener( - (v -> showSysUiDirectManipulationExamples(/* hasFocus= */ true))); - - mNotificationButton = view.findViewById(R.id.notification); - mNotificationButton.setOnFocusChangeListener( - (v, hasFocus) -> showNotificationExample(hasFocus)); - mNotificationButton.setOnClickListener(v -> showNotificationExample(/* hasFocus= */ true)); - - mScrollButton = view.findViewById(R.id.scroll); - mScrollButton.setOnFocusChangeListener((v, hasFocus) -> showScrollFragment(hasFocus)); - mScrollButton.setOnClickListener(v -> showScrollFragment(/* hasFocus= */ true)); + Button cardButton = view.findViewById(R.id.cards); + cardButton.setOnClickListener(v -> { + selectTab(v); + showRotaryCards(); + }); + + Button gridButton = view.findViewById(R.id.grid); + gridButton.setOnClickListener(v -> { + selectTab(v); + showGridExample(); + }); + + Button directManipulationButton = view.findViewById(R.id.direct_manipulation); + directManipulationButton.setOnClickListener( + (v -> { + selectTab(v); + showDirectManipulationExamples(); + })); + + Button sysUiDirectManipulationButton = view.findViewById(R.id.sys_ui_direct_manipulation); + sysUiDirectManipulationButton.setOnClickListener( + (v -> { + selectTab(v); + showSysUiDirectManipulationExamples(); + })); + + Button notificationButton = view.findViewById(R.id.notification); + notificationButton.setOnClickListener(v -> { + selectTab(v); + showNotificationExample(); + }); + + Button scrollButton = view.findViewById(R.id.scroll); + scrollButton.setOnClickListener(v -> { + selectTab(v); + showScrollFragment(); + }); return view; } - private void showRotaryCards(boolean hasFocus) { - if (!hasFocus) { - return; // Do nothing if no focus. + private void selectTab(View view) { + ViewGroup container = (ViewGroup) view.getParent(); + for (int i = 0; i < container.getChildCount(); i++) { + container.getChildAt(i).setSelected(false); } + view.setSelected(true); + } + + private void showRotaryCards() { if (mRotaryCards == null) { mRotaryCards = new RotaryCards(); } showFragment(mRotaryCards); } - private void showGridExample(boolean hasFocus) { - if (!hasFocus) { - return; // do nothing if no focus. - } + private void showGridExample() { if (mRotaryGrid == null) { mRotaryGrid = new RotaryGrid(); } @@ -104,40 +108,28 @@ public class RotaryMenu extends Fragment { // TODO(agathaman): refactor this and the showRotaryCards above into a // showFragment(Fragment fragment, boolean hasFocus); method. - private void showDirectManipulationExamples(boolean hasFocus) { - if (!hasFocus) { - return; // Do nothing if no focus. - } + private void showDirectManipulationExamples() { if (mDirectManipulation == null) { mDirectManipulation = new RotaryDirectManipulationWidgets(); } showFragment(mDirectManipulation); } - private void showSysUiDirectManipulationExamples(boolean hasFocus) { - if (!hasFocus) { - return; // Do nothing if no focus. - } + private void showSysUiDirectManipulationExamples() { if (mSysUiDirectManipulation == null) { mSysUiDirectManipulation = new RotarySysUiDirectManipulationWidgets(); } showFragment(mSysUiDirectManipulation); } - private void showNotificationExample(boolean hasFocus) { - if (!hasFocus) { - return; // do nothing if no focus. - } + private void showNotificationExample() { if (mNotificationFragment == null) { mNotificationFragment = new HeadsUpNotificationFragment(); } showFragment(mNotificationFragment); } - private void showScrollFragment(boolean hasFocus) { - if (!hasFocus) { - return; // Do nothing if no focus. - } + private void showScrollFragment() { if (mScrollFragment == null) { mScrollFragment = new ScrollFragment(); } |