summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorandroid-build-prod (mdb) <android-build-team-robot@google.com>2018-05-04 01:20:54 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2018-05-04 01:20:54 +0000
commit2ebf13586cedf13d563174cd3a44a4230dcdd8cd (patch)
treea8c05025db20a849acb649c33ee8e1758c743178 /java
parent86214b64708c84dbf1c5aead33f2e4206eb83dd9 (diff)
parent1197065855cbb0ce6cbb85234df5bd67d7b81fab (diff)
Merge changes I86d2f5b7,Iea81035e
* changes: Change bottomsheet peek height. Updated bottomsheet to be scrollable.
Diffstat (limited to 'java')
-rw-r--r--java/com/android/dialer/historyitemactions/HistoryItemActionBottomSheet.java61
-rw-r--r--java/com/android/dialer/historyitemactions/res/layout/contact_layout.xml10
-rw-r--r--java/com/android/dialer/historyitemactions/res/layout/sheet_layout.xml23
-rw-r--r--java/com/android/dialer/historyitemactions/res/values-land/styles.xml21
-rw-r--r--java/com/android/dialer/historyitemactions/res/values/dimens.xml1
-rw-r--r--java/com/android/dialer/historyitemactions/res/values/styles.xml32
-rw-r--r--java/com/android/dialer/speeddial/SpeedDialFragment.java13
7 files changed, 142 insertions, 19 deletions
diff --git a/java/com/android/dialer/historyitemactions/HistoryItemActionBottomSheet.java b/java/com/android/dialer/historyitemactions/HistoryItemActionBottomSheet.java
index 28663c17d..e3e9e7a64 100644
--- a/java/com/android/dialer/historyitemactions/HistoryItemActionBottomSheet.java
+++ b/java/com/android/dialer/historyitemactions/HistoryItemActionBottomSheet.java
@@ -19,6 +19,9 @@ package com.android.dialer.historyitemactions;
import android.content.Context;
import android.content.res.ColorStateList;
import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.design.widget.BottomSheetBehavior;
+import android.support.design.widget.BottomSheetBehavior.BottomSheetCallback;
import android.support.design.widget.BottomSheetDialog;
import android.support.v4.content.ContextCompat;
import android.text.TextUtils;
@@ -26,6 +29,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
+import android.view.Window;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
@@ -49,9 +53,9 @@ public class HistoryItemActionBottomSheet extends BottomSheetDialog implements O
Context context,
HistoryItemBottomSheetHeaderInfo historyItemBottomSheetHeaderInfo,
List<HistoryItemActionModule> modules) {
- super(context);
+ super(context, R.style.HistoryItemBottomSheet);
this.modules = modules;
- this.historyItemBottomSheetHeaderInfo = historyItemBottomSheetHeaderInfo;
+ this.historyItemBottomSheetHeaderInfo = Assert.isNotNull(historyItemBottomSheetHeaderInfo);
setContentView(LayoutInflater.from(context).inflate(R.layout.sheet_layout, null));
}
@@ -67,10 +71,10 @@ public class HistoryItemActionBottomSheet extends BottomSheetDialog implements O
@Override
protected void onCreate(Bundle bundle) {
- super.onCreate(bundle);
- LinearLayout container = Assert.isNotNull(findViewById(R.id.action_container));
- container.addView(getContactView(container));
+ setupWindow();
+ setupContactLayout();
+ LinearLayout container = Assert.isNotNull(findViewById(R.id.action_container));
for (HistoryItemActionModule module : modules) {
if (module instanceof DividerModule) {
container.addView(getDividerView(container));
@@ -80,9 +84,20 @@ public class HistoryItemActionBottomSheet extends BottomSheetDialog implements O
}
}
- private View getContactView(ViewGroup container) {
- LayoutInflater inflater = LayoutInflater.from(getContext());
- View contactView = inflater.inflate(R.layout.contact_layout, container, false);
+ // Overrwrites the window size since Dialog's don't match parent.
+ private void setupWindow() {
+ Window window = getWindow();
+ if (window == null) {
+ return;
+ }
+ // TODO(calderwoodra): set the nav bar color
+ window.setLayout(
+ /* width = */ ViewGroup.LayoutParams.MATCH_PARENT,
+ /* height = */ ViewGroup.LayoutParams.MATCH_PARENT);
+ }
+
+ private void setupContactLayout() {
+ View contactView = Assert.isNotNull(findViewById(R.id.contact_layout_root));
ContactPhotoView contactPhotoView = contactView.findViewById(R.id.contact_photo_view);
contactPhotoView.setPhoto(historyItemBottomSheetHeaderInfo.getPhotoInfo());
@@ -97,7 +112,35 @@ public class HistoryItemActionBottomSheet extends BottomSheetDialog implements O
secondaryTextView.setVisibility(View.GONE);
secondaryTextView.setText(null);
}
- return contactView;
+
+ View background = findViewById(android.support.design.R.id.touch_outside);
+ BottomSheetBehavior behavior =
+ BottomSheetBehavior.from(findViewById(android.support.design.R.id.design_bottom_sheet));
+ behavior.setBottomSheetCallback(
+ new BottomSheetCallback() {
+ @Override
+ public void onStateChanged(@NonNull View bottomSheet, int newState) {
+ if (newState == BottomSheetBehavior.STATE_HIDDEN) {
+ cancel();
+ return;
+ }
+
+ // If the bottomsheet can expand to full screen, set the header's elevation when it's
+ // fully expanded.
+ if (background.getHeight() == bottomSheet.getHeight()) {
+ contactView.setElevation(
+ newState == BottomSheetBehavior.STATE_EXPANDED
+ ? getContext()
+ .getResources()
+ .getDimensionPixelSize(R.dimen.contact_actions_header_elevation)
+ : 0);
+ // TODO(calderwoodra): set the status bar color when expanded, else translucent
+ }
+ }
+
+ @Override
+ public void onSlide(@NonNull View bottomSheet, float slideOffset) {}
+ });
}
private View getDividerView(ViewGroup container) {
diff --git a/java/com/android/dialer/historyitemactions/res/layout/contact_layout.xml b/java/com/android/dialer/historyitemactions/res/layout/contact_layout.xml
index f2dc8c7ac..721740f97 100644
--- a/java/com/android/dialer/historyitemactions/res/layout/contact_layout.xml
+++ b/java/com/android/dialer/historyitemactions/res/layout/contact_layout.xml
@@ -15,13 +15,15 @@
~ limitations under the License
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/contact_layout_root"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:layout_marginTop="8dp"
- android:layout_marginBottom="12dp"
- android:layout_marginEnd="8dp"
+ android:paddingTop="12dp"
+ android:paddingBottom="12dp"
+ android:paddingEnd="8dp"
android:gravity="center_vertical"
- android:orientation="horizontal">
+ android:orientation="horizontal"
+ android:background="#FFFFFF">
<com.android.dialer.widget.ContactPhotoView
android:id="@+id/contact_photo_view"
diff --git a/java/com/android/dialer/historyitemactions/res/layout/sheet_layout.xml b/java/com/android/dialer/historyitemactions/res/layout/sheet_layout.xml
index 6984367bf..006302e2d 100644
--- a/java/com/android/dialer/historyitemactions/res/layout/sheet_layout.xml
+++ b/java/com/android/dialer/historyitemactions/res/layout/sheet_layout.xml
@@ -16,9 +16,24 @@
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/action_container"
+ android:id="@+id/history_item_actions_bottom_sheet_root"
android:orientation="vertical"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:paddingTop="4dp"
- android:paddingBottom="8dp"/>
+ android:layout_height="match_parent">
+
+ <include layout="@layout/contact_layout"/>
+
+ <android.support.v4.widget.NestedScrollView
+ android:id="@+id/history_actions_scroll_view"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <LinearLayout
+ android:id="@+id/action_container"
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingBottom="4dp"
+ android:clipToPadding="false"/>
+ </android.support.v4.widget.NestedScrollView>
+</LinearLayout>
diff --git a/java/com/android/dialer/historyitemactions/res/values-land/styles.xml b/java/com/android/dialer/historyitemactions/res/values-land/styles.xml
new file mode 100644
index 000000000..bc727d073
--- /dev/null
+++ b/java/com/android/dialer/historyitemactions/res/values-land/styles.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2018 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+<resources>
+ <style name="HistoryItemBottomSheet.BottomSheetStyle" parent="Widget.Design.BottomSheet.Modal">
+ <item name="behavior_peekHeight">206dp</item>
+ </style>
+</resources>
diff --git a/java/com/android/dialer/historyitemactions/res/values/dimens.xml b/java/com/android/dialer/historyitemactions/res/values/dimens.xml
index 47bf804ac..a98101e0e 100644
--- a/java/com/android/dialer/historyitemactions/res/values/dimens.xml
+++ b/java/com/android/dialer/historyitemactions/res/values/dimens.xml
@@ -17,4 +17,5 @@
<resources>
<dimen name="contact_actions_image_size">48dp</dimen>
<dimen name="contact_actions_image_margin">12dp</dimen>
+ <dimen name="contact_actions_header_elevation">4dp</dimen>
</resources> \ No newline at end of file
diff --git a/java/com/android/dialer/historyitemactions/res/values/styles.xml b/java/com/android/dialer/historyitemactions/res/values/styles.xml
new file mode 100644
index 000000000..ed3cf115a
--- /dev/null
+++ b/java/com/android/dialer/historyitemactions/res/values/styles.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2018 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+<resources>
+ <style name="HistoryItemBottomSheet.Base" parent="Theme.Design.Light.BottomSheetDialog">
+ <item name="android:windowDrawsSystemBarBackgrounds">false</item>
+ <item name="android:windowTranslucentNavigation">false</item>
+ <item name="android:windowTranslucentStatus">false</item>
+ <item name="android:navigationBarColor">@color/background_dialer_white</item>
+ </style>
+
+ <style name="HistoryItemBottomSheet" parent="HistoryItemBottomSheet.Base">
+ <item name="bottomSheetStyle">@style/HistoryItemBottomSheet.BottomSheetStyle</item>
+ </style>
+
+ <style name="HistoryItemBottomSheet.BottomSheetStyle" parent="Widget.Design.BottomSheet.Modal">
+ <item name="behavior_peekHeight">405dp</item>
+ </style>
+</resources>
diff --git a/java/com/android/dialer/speeddial/SpeedDialFragment.java b/java/com/android/dialer/speeddial/SpeedDialFragment.java
index 17591aa6c..c1745990d 100644
--- a/java/com/android/dialer/speeddial/SpeedDialFragment.java
+++ b/java/com/android/dialer/speeddial/SpeedDialFragment.java
@@ -80,7 +80,7 @@ import java.util.List;
public class SpeedDialFragment extends Fragment {
private final SpeedDialHeaderListener headerListener = new SpeedDialFragmentHeaderListener();
- private final SuggestedContactsListener suggestedListener = new SpeedDialSuggestedListener();
+ private final SpeedDialSuggestedListener suggestedListener = new SpeedDialSuggestedListener();
private ContextMenu contextMenu;
private FrameLayout contextMenuBackground;
@@ -214,6 +214,7 @@ public class SpeedDialFragment extends Fragment {
}),
new DefaultFutureCallback<>(),
DialerExecutorComponent.get(getContext()).backgroundExecutor());
+ suggestedListener.onPause();
}
@Override
@@ -313,6 +314,8 @@ public class SpeedDialFragment extends Fragment {
private final class SpeedDialSuggestedListener implements SuggestedContactsListener {
+ private HistoryItemActionBottomSheet bottomSheet;
+
@Override
public void onOverFlowMenuClicked(
SpeedDialUiItem speedDialUiItem, HistoryItemBottomSheetHeaderInfo headerInfo) {
@@ -364,7 +367,7 @@ public class SpeedDialFragment extends Fragment {
R.string.contact_menu_contact_info,
R.drawable.context_menu_contact_icon));
- HistoryItemActionBottomSheet.show(getContext(), headerInfo, modules);
+ bottomSheet = HistoryItemActionBottomSheet.show(getContext(), headerInfo, modules);
}
@Override
@@ -430,6 +433,12 @@ public class SpeedDialFragment extends Fragment {
return false;
}
}
+
+ public void onPause() {
+ if (bottomSheet != null && bottomSheet.isShowing()) {
+ bottomSheet.dismiss();
+ }
+ }
}
private static final class SpeedDialContextMenuItemListener implements ContextMenuItemListener {