Merge changes I04d5e59f,Ia5fa3517
* changes: Update overflow button on theme change Empty overflow UI
This commit is contained in:
committed by
Android (Google) Code Review
commit
b82b55f30d
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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. */
|
||||
|
||||
Reference in New Issue
Block a user