summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Zemiao Zhu <zemiao@google.com> 2020-09-23 21:48:12 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2020-09-23 21:48:12 +0000
commit2e464177095171224b2d211cd8eb52aef56bb9e9 (patch)
treea0574dfb9fe3b0de52c9ba984285873a474616f0
parent6f5fffff9e287faa4ec48367c9aa1bb576326515 (diff)
parent5f61603bc2f4cdfbb58dc21d40534fbb38fef2e4 (diff)
Merge "Add shadow to top toolbar." into mainline-prod am: 5f61603bc2
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/DocumentsUI/+/12640590 Change-Id: I0db3dab8622d126058a6156f33ae5e9332338e54
-rw-r--r--res/layout/directory_app_bar.xml13
-rw-r--r--res/layout/directory_header.xml1
-rw-r--r--res/layout/drawer_layout.xml15
-rw-r--r--res/values-sw720dp/dimens.xml2
-rw-r--r--res/values/dimens.xml7
-rw-r--r--res/values/styles.xml2
-rw-r--r--src/com/android/documentsui/ActionModeController.java6
-rw-r--r--src/com/android/documentsui/NavigationViewManager.java69
-rw-r--r--src/com/android/documentsui/files/FilesActivity.java1
-rw-r--r--src/com/android/documentsui/picker/PickActivity.java1
-rw-r--r--src/com/android/documentsui/queries/SearchFragment.java6
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);
}