diff options
-rw-r--r-- | res/layout/directory_app_bar.xml | 13 | ||||
-rw-r--r-- | res/layout/directory_header.xml | 1 | ||||
-rw-r--r-- | res/layout/drawer_layout.xml | 15 | ||||
-rw-r--r-- | res/values-sw720dp/dimens.xml | 2 | ||||
-rw-r--r-- | res/values/dimens.xml | 7 | ||||
-rw-r--r-- | res/values/styles.xml | 2 | ||||
-rw-r--r-- | src/com/android/documentsui/ActionModeController.java | 6 | ||||
-rw-r--r-- | src/com/android/documentsui/NavigationViewManager.java | 69 | ||||
-rw-r--r-- | src/com/android/documentsui/files/FilesActivity.java | 1 | ||||
-rw-r--r-- | src/com/android/documentsui/picker/PickActivity.java | 1 | ||||
-rw-r--r-- | src/com/android/documentsui/queries/SearchFragment.java | 6 |
11 files changed, 74 insertions, 49 deletions
diff --git a/res/layout/directory_app_bar.xml b/res/layout/directory_app_bar.xml index 3225ce599..ad80ec201 100644 --- a/res/layout/directory_app_bar.xml +++ b/res/layout/directory_app_bar.xml @@ -34,17 +34,10 @@ android:layout_width="match_parent" android:layout_height="wrap_content"> - <include layout="@layout/directory_header"/> + <include layout="@layout/directory_header" /> </androidx.core.widget.NestedScrollView> - <View - android:id="@+id/toolbar_background_layout" - android:layout_width="match_parent" - android:layout_height="@dimen/action_bar_space_height" - android:background="?android:attr/colorBackground" - app:layout_collapseMode="pin"/> - <androidx.appcompat.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" @@ -53,7 +46,7 @@ android:background="?android:attr/colorBackground" android:theme="?actionBarTheme" android:popupTheme="?actionBarPopupTheme" - android:elevation="3dp" + android:elevation="@dimen/search_bar_elevation" app:collapseContentDescription="@string/button_back" app:titleTextAppearance="@style/ToolbarTitle" app:layout_collapseMode="pin"> @@ -64,7 +57,7 @@ android:layout_height="?android:attr/actionBarSize" android:gravity="center_vertical" android:text="@string/search_bar_hint" - android:textAppearance="@style/SearchBarTitle"/> + android:textAppearance="@style/SearchBarTitle" /> </androidx.appcompat.widget.Toolbar> diff --git a/res/layout/directory_header.xml b/res/layout/directory_header.xml index 94c52e978..b7ab7d96a 100644 --- a/res/layout/directory_header.xml +++ b/res/layout/directory_header.xml @@ -18,7 +18,6 @@ android:id="@+id/directory_header" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="@dimen/action_bar_space_margin" android:orientation="vertical"> <com.android.documentsui.HorizontalBreadcrumb diff --git a/res/layout/drawer_layout.xml b/res/layout/drawer_layout.xml index 74e219cbc..589953d54 100644 --- a/res/layout/drawer_layout.xml +++ b/res/layout/drawer_layout.xml @@ -38,19 +38,12 @@ android:layout_height="match_parent" app:layout_behavior="@string/scrolling_behavior"> - <LinearLayout + <FrameLayout + android:id="@+id/container_directory" + android:clipToPadding="false" android:layout_width="match_parent" android:layout_height="match_parent" - android:orientation="vertical"> - - <FrameLayout - android:id="@+id/container_directory" - android:clipToPadding="false" - android:layout_width="match_parent" - android:layout_height="0dp" - android:layout_weight="1" /> - - </LinearLayout> + android:layout_weight="1" /> <FrameLayout android:id="@+id/container_search_fragment" diff --git a/res/values-sw720dp/dimens.xml b/res/values-sw720dp/dimens.xml index 7ce3b5307..85c370ab9 100644 --- a/res/values-sw720dp/dimens.xml +++ b/res/values-sw720dp/dimens.xml @@ -28,6 +28,4 @@ <dimen name="search_bar_text_margin_start">55dp</dimen> <dimen name="search_bar_text_margin_end">24dp</dimen> <dimen name="search_bar_icon_padding">16dp</dimen> - - <dimen name="action_bar_space_margin">0dp</dimen> </resources> diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 533e16b5d..3b326e136 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -111,15 +111,16 @@ <dimen name="apps_row_exit_icon_margin_bottom">6dp</dimen> <dimen name="apps_row_item_text_margin_horizontal">8dp</dimen> + <dimen name="search_bar_elevation">3dp</dimen> <dimen name="search_bar_radius">8dp</dimen> <dimen name="search_bar_background_margin_start">0dp</dimen> <dimen name="search_bar_background_margin_end">0dp</dimen> <dimen name="search_bar_margin">8dp</dimen> <dimen name="search_bar_text_size">16dp</dimen> + + <dimen name="action_bar_elevation">3dp</dimen> + <dimen name="action_bar_margin">1dp</dimen> <dimen name="action_bar_size">48dp</dimen> - <!--This value should equal actionBarSize + (2 x search_bar_margin)--> - <dimen name="action_bar_space_height">64dp</dimen> - <dimen name="action_bar_space_margin">@dimen/action_bar_space_height</dimen> <dimen name="action_mode_text_size">18sp</dimen> <dimen name="refresh_icon_range">64dp</dimen> diff --git a/res/values/styles.xml b/res/values/styles.xml index 7b90d06dc..d35005af2 100644 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -21,7 +21,7 @@ <style name="ActionModeStyle" parent="Widget.AppCompat.ActionMode"> <!-- attr "height" was used by support lib should not in overlay scope --> - <item name="height">@dimen/action_bar_space_height</item> + <item name="height">@dimen/action_bar_size</item> <item name="titleTextStyle">@style/ActionModeTitle</item> <item name="android:layout_margin">@dimen/search_bar_margin</item> </style> diff --git a/src/com/android/documentsui/ActionModeController.java b/src/com/android/documentsui/ActionModeController.java index d8cf59000..89b8ff383 100644 --- a/src/com/android/documentsui/ActionModeController.java +++ b/src/com/android/documentsui/ActionModeController.java @@ -46,6 +46,7 @@ public class ActionModeController extends SelectionObserver<String> private final Activity mActivity; private final SelectionTracker<String> mSelectionMgr; + private final NavigationViewManager mNavigator; private final MenuManager mMenuManager; private final MessageBuilder mMessages; @@ -58,11 +59,13 @@ public class ActionModeController extends SelectionObserver<String> public ActionModeController( Activity activity, SelectionTracker<String> selectionMgr, + NavigationViewManager navigator, MenuManager menuManager, MessageBuilder messages) { mActivity = activity; mSelectionMgr = selectionMgr; + mNavigator = navigator; mMenuManager = menuManager; mMessages = messages; } @@ -132,6 +135,8 @@ public class ActionModeController extends SelectionObserver<String> // Re-enable TalkBack for the toolbars, as they are no longer covered by action mode. mScope.accessibilityImportanceSetter.setAccessibilityImportance( View.IMPORTANT_FOR_ACCESSIBILITY_AUTO, R.id.toolbar, R.id.roots_toolbar); + + mNavigator.setActionModeActivated(false); } @Override @@ -141,6 +146,7 @@ public class ActionModeController extends SelectionObserver<String> mode.setTitle(mActivity.getResources().getQuantityString(R.plurals.selected_count, size)); if (size > 0) { + mNavigator.setActionModeActivated(true); // Hide the toolbars if action mode is enabled, so TalkBack doesn't navigate to // these controls when using linear navigation. diff --git a/src/com/android/documentsui/NavigationViewManager.java b/src/com/android/documentsui/NavigationViewManager.java index 204971dce..52d2b1281 100644 --- a/src/com/android/documentsui/NavigationViewManager.java +++ b/src/com/android/documentsui/NavigationViewManager.java @@ -24,6 +24,7 @@ import android.graphics.drawable.Drawable; import android.util.Log; import android.view.View; import android.view.ViewOutlineProvider; +import android.widget.FrameLayout; import androidx.annotation.Nullable; import androidx.appcompat.widget.Toolbar; @@ -35,7 +36,6 @@ import com.android.documentsui.dirlist.AnimationView; import com.google.android.material.appbar.AppBarLayout; import com.google.android.material.appbar.CollapsingToolbarLayout; -import com.google.android.material.tabs.TabLayout; import java.util.function.IntConsumer; @@ -48,6 +48,7 @@ public class NavigationViewManager { private final DrawerController mDrawer; private final Toolbar mToolbar; + private final View mHeader; private final State mState; private final NavigationViewManager.Environment mEnv; private final Breadcrumb mBreadcrumb; @@ -55,9 +56,12 @@ public class NavigationViewManager { private final View mSearchBarView; private final CollapsingToolbarLayout mCollapsingBarLayout; private final Drawable mDefaultActionBarBackground; + private final ViewOutlineProvider mDefaultOutlineProvider; private final ViewOutlineProvider mSearchBarOutlineProvider; private final boolean mShowSearchBar; + private boolean mIsActionModeActivated = false; + public NavigationViewManager( BaseActivity activity, DrawerController drawer, @@ -68,6 +72,7 @@ public class NavigationViewManager { UserIdManager userIdManager) { mToolbar = activity.findViewById(R.id.toolbar); + mHeader = activity.findViewById(R.id.directory_header); mDrawer = drawer; mState = state; mEnv = env; @@ -85,6 +90,7 @@ public class NavigationViewManager { mSearchBarView = activity.findViewById(R.id.searchbar_title); mCollapsingBarLayout = activity.findViewById(R.id.collapsing_toolbar); mDefaultActionBarBackground = mToolbar.getBackground(); + mDefaultOutlineProvider = mToolbar.getOutlineProvider(); mShowSearchBar = activity.getResources().getBoolean(R.bool.show_search_bar); final Resources resources = mToolbar.getResources(); @@ -138,6 +144,11 @@ public class NavigationViewManager { return mProfileTabs.getSelectedUser(); } + public void setActionModeActivated(boolean actionModeActivated) { + mIsActionModeActivated = actionModeActivated; + update(); + } + public void update() { updateScrollFlag(); updateToolbar(); @@ -177,30 +188,44 @@ public class NavigationViewManager { AppBarLayout.LayoutParams lp = (AppBarLayout.LayoutParams) mCollapsingBarLayout.getLayoutParams(); - if (shouldShowSearchBar()) { - lp.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL - | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS - | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS_COLLAPSED); - } else { - lp.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL - | AppBarLayout.LayoutParams.SCROLL_FLAG_EXIT_UNTIL_COLLAPSED); - } + lp.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL + | AppBarLayout.LayoutParams.SCROLL_FLAG_EXIT_UNTIL_COLLAPSED); mCollapsingBarLayout.setLayoutParams(lp); } private void updateToolbar() { - if (shouldShowSearchBar()) { + CollapsingToolbarLayout.LayoutParams toolbarLayoutParams = + (CollapsingToolbarLayout.LayoutParams) mToolbar.getLayoutParams(); + + int headerTopOffset = 0; + if (shouldShowSearchBar() && !mIsActionModeActivated) { mToolbar.setBackgroundResource(R.drawable.search_bar_background); mToolbar.setOutlineProvider(mSearchBarOutlineProvider); + int searchBarMargin = mToolbar.getResources().getDimensionPixelSize( + R.dimen.search_bar_margin); + toolbarLayoutParams.setMargins(searchBarMargin, searchBarMargin, searchBarMargin, + searchBarMargin); + mToolbar.setLayoutParams(toolbarLayoutParams); + mToolbar.setElevation( + mToolbar.getResources().getDimensionPixelSize(R.dimen.search_bar_elevation)); + headerTopOffset = toolbarLayoutParams.height + searchBarMargin * 2; } else { mToolbar.setBackground(mDefaultActionBarBackground); - mToolbar.setOutlineProvider(null); + mToolbar.setOutlineProvider(mDefaultOutlineProvider); + int actionBarMargin = mToolbar.getResources().getDimensionPixelSize( + R.dimen.action_bar_margin); + toolbarLayoutParams.setMargins(0, 0, 0, /* bottom= */ actionBarMargin); + mToolbar.setLayoutParams(toolbarLayoutParams); + mToolbar.setElevation( + mToolbar.getResources().getDimensionPixelSize(R.dimen.action_bar_elevation)); + headerTopOffset = toolbarLayoutParams.height + actionBarMargin; } - if (mCollapsingBarLayout != null) { - View overlayBackground = - mCollapsingBarLayout.findViewById(R.id.toolbar_background_layout); - overlayBackground.setVisibility(shouldShowSearchBar() ? View.GONE : View.VISIBLE); + if (!mIsActionModeActivated) { + FrameLayout.LayoutParams headerLayoutParams = + (FrameLayout.LayoutParams) mHeader.getLayoutParams(); + headerLayoutParams.setMargins(0, /* top= */ headerTopOffset, 0, 0); + mHeader.setLayoutParams(headerLayoutParams); } } @@ -209,7 +234,8 @@ public class NavigationViewManager { } // Hamburger if drawer is present, else sad nullness. - private @Nullable Drawable getActionBarIcon() { + private @Nullable + Drawable getActionBarIcon() { if (mDrawer.isPresent()) { return mToolbar.getContext().getDrawable(R.drawable.ic_hamburger); } else { @@ -223,16 +249,23 @@ public class NavigationViewManager { interface Breadcrumb { void setup(Environment env, State state, IntConsumer listener); + void show(boolean visibility); + void postUpdate(); } interface Environment { - @Deprecated // Use CommonAddones#getCurrentRoot + @Deprecated + // Use CommonAddones#getCurrentRoot RootInfo getCurrentRoot(); + String getDrawerTitle(); - @Deprecated // Use CommonAddones#refreshCurrentRootAndDirectory + + @Deprecated + // Use CommonAddones#refreshCurrentRootAndDirectory void refreshCurrentRootAndDirectory(int animation); + boolean isSearchExpanded(); } } diff --git a/src/com/android/documentsui/files/FilesActivity.java b/src/com/android/documentsui/files/FilesActivity.java index 232f29809..7c09811c9 100644 --- a/src/com/android/documentsui/files/FilesActivity.java +++ b/src/com/android/documentsui/files/FilesActivity.java @@ -132,6 +132,7 @@ public class FilesActivity extends BaseActivity implements AbstractActionHandler mInjector.actionModeController = new ActionModeController( this, mInjector.selectionMgr, + mNavigator, mInjector.menuManager, mInjector.messages); diff --git a/src/com/android/documentsui/picker/PickActivity.java b/src/com/android/documentsui/picker/PickActivity.java index 5328c640e..c2fbd50a0 100644 --- a/src/com/android/documentsui/picker/PickActivity.java +++ b/src/com/android/documentsui/picker/PickActivity.java @@ -121,6 +121,7 @@ public class PickActivity extends BaseActivity implements ActionHandler.Addons { mInjector.actionModeController = new ActionModeController( this, mInjector.selectionMgr, + mNavigator, mInjector.menuManager, mInjector.messages); diff --git a/src/com/android/documentsui/queries/SearchFragment.java b/src/com/android/documentsui/queries/SearchFragment.java index 667dc8e48..0223559c1 100644 --- a/src/com/android/documentsui/queries/SearchFragment.java +++ b/src/com/android/documentsui/queries/SearchFragment.java @@ -40,7 +40,7 @@ import com.android.documentsui.R; import java.util.List; -public class SearchFragment extends Fragment{ +public class SearchFragment extends Fragment { private static final String TAG = "SearchFragment"; private static final String KEY_QUERY = "query"; @@ -121,14 +121,14 @@ public class SearchFragment extends Fragment{ mListView.setAdapter(mAdapter); mListView.setOnItemClickListener(this::onHistoryItemClicked); - View toolbar = getActivity().findViewById(R.id.toolbar_background_layout); + View toolbar = getActivity().findViewById(R.id.toolbar); if (toolbar != null) { // Align top with the bottom of search bar. FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); layoutParams.setMargins(0, getResources().getDimensionPixelSize( - R.dimen.action_bar_space_height), 0, 0); + R.dimen.action_bar_margin) + toolbar.getLayoutParams().height, 0, 0); getView().setLayoutParams(layoutParams); } |