Merge changes I04d5e59f,Ia5fa3517

* changes:
  Update overflow button on theme change
  Empty overflow UI
This commit is contained in:
TreeHugger Robot
2020-02-13 20:00:59 +00:00
committed by Android (Google) Code Review
5 changed files with 72 additions and 10 deletions

View File

@@ -14,8 +14,45 @@
~ limitations under the License
-->
<androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/bubble_overflow_recycler"
android:layout_gravity="center_horizontal"
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/bubble_overflow_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_gravity="center_horizontal">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/bubble_overflow_recycler"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<LinearLayout
android:id="@+id/bubble_overflow_empty_state"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<TextView
android:id="@+id/bubble_overflow_empty_title"
android:text="@string/bubble_overflow_empty_title"
android:fontFamily="@*android:string/config_bodyFontFamilyMedium"
android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Body2"
android:textColor="?android:attr/textColorSecondary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"/>
<TextView
android:id="@+id/bubble_overflow_empty_subtitle"
android:fontFamily="@*android:string/config_bodyFontFamily"
android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Body2"
android:textColor="?android:attr/textColorSecondary"
android:text="@string/bubble_overflow_empty_subtitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"/>
</LinearLayout>
</LinearLayout>

View File

@@ -1780,6 +1780,12 @@
<!-- [CHAR LIMIT=150] Notification Importance title: bubble level summary -->
<string name="notification_channel_summary_bubble">Keeps your attention with a floating shortcut to this content.</string>
<!-- [CHAR LIMIT=NONE] Empty overflow title -->
<string name="bubble_overflow_empty_title">No recent bubbles</string>
<!-- [CHAR LIMIT=NONE] Empty overflow subtitle -->
<string name="bubble_overflow_empty_subtitle">Recently dismissed bubbles will appear here for easy retrieval.</string>
<!-- Notification: Control panel: Label that displays when the app's notifications cannot be blocked. -->
<string name="notification_unblockable_desc">These notifications can\'t be modified.</string>

View File

@@ -294,7 +294,8 @@ public class BubbleExpandedView extends LinearLayout implements View.OnClickList
ta.recycle();
mPointerDrawable.setTint(bgColor);
if (ScreenDecorationsUtils.supportsRoundedCornersOnWindows(mContext.getResources())) {
if (mActivityView != null && ScreenDecorationsUtils.supportsRoundedCornersOnWindows(
mContext.getResources())) {
mActivityView.setCornerRadius(cornerRadius);
}
}

View File

@@ -26,7 +26,10 @@ import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -46,6 +49,7 @@ import javax.inject.Inject;
public class BubbleOverflowActivity extends Activity {
private static final String TAG = TAG_WITH_CLASS_NAME ? "BubbleOverflowActivity" : TAG_BUBBLES;
private LinearLayout mEmptyState;
private BubbleController mBubbleController;
private BubbleOverflowAdapter mAdapter;
private RecyclerView mRecyclerView;
@@ -64,6 +68,7 @@ public class BubbleOverflowActivity extends Activity {
setBackgroundColor();
mMaxBubbles = getResources().getInteger(R.integer.bubbles_max_rendered);
mEmptyState = findViewById(R.id.bubble_overflow_empty_state);
mRecyclerView = findViewById(R.id.bubble_overflow_recycler);
mRecyclerView.setLayoutManager(
new GridLayoutManager(getApplicationContext(),
@@ -73,9 +78,9 @@ public class BubbleOverflowActivity extends Activity {
mBubbleController::promoteBubbleFromOverflow);
mRecyclerView.setAdapter(mAdapter);
updateData(mBubbleController.getOverflowBubbles());
onDataChanged(mBubbleController.getOverflowBubbles());
mBubbleController.setOverflowCallback(() -> {
updateData(mBubbleController.getOverflowBubbles());
onDataChanged(mBubbleController.getOverflowBubbles());
});
}
@@ -87,7 +92,7 @@ public class BubbleOverflowActivity extends Activity {
findViewById(android.R.id.content).setBackgroundColor(bgColor);
}
void updateData(List<Bubble> bubbles) {
void onDataChanged(List<Bubble> bubbles) {
mOverflowBubbles.clear();
if (bubbles.size() > mMaxBubbles) {
mOverflowBubbles.addAll(bubbles.subList(mMaxBubbles, bubbles.size()));
@@ -96,6 +101,12 @@ public class BubbleOverflowActivity extends Activity {
}
mAdapter.notifyDataSetChanged();
if (mOverflowBubbles.isEmpty()) {
mEmptyState.setVisibility(View.VISIBLE);
} else {
mEmptyState.setVisibility(View.GONE);
}
if (DEBUG_OVERFLOW) {
Log.d(TAG, "Updated overflow bubbles:\n" + BubbleDebugConfig.formatBubblesString(
mOverflowBubbles, /*selected*/ null));

View File

@@ -528,6 +528,12 @@ public class BubbleStackView extends FrameLayout {
mBubbleContainer.addView(mOverflowBtn, 0,
new FrameLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT));
setOverflowBtnTheme();
mOverflowBtn.setVisibility(GONE);
}
// TODO(b/149146374) Propagate theme change to bubbles in overflow.
private void setOverflowBtnTheme() {
TypedArray ta = mContext.obtainStyledAttributes(
new int[]{android.R.attr.colorBackgroundFloating});
int bgColor = ta.getColor(0, Color.WHITE /* default */);
@@ -537,8 +543,6 @@ public class BubbleStackView extends FrameLayout {
ColorDrawable bg = new ColorDrawable(bgColor);
AdaptiveIconDrawable adaptiveIcon = new AdaptiveIconDrawable(bg, fg);
mOverflowBtn.setImageDrawable(adaptiveIcon);
mOverflowBtn.setVisibility(GONE);
}
void showExpandedViewContents(int displayId) {
@@ -568,6 +572,9 @@ public class BubbleStackView extends FrameLayout {
*/
public void onThemeChanged() {
setUpFlyout();
if (BubbleExperimentConfig.allowBubbleOverflow(mContext)) {
setOverflowBtnTheme();
}
}
/** Respond to the phone being rotated by repositioning the stack and hiding any flyouts. */