diff options
3 files changed, 62 insertions, 44 deletions
diff --git a/libs/WindowManager/Shell/res/layout/bubble_expanded_view.xml b/libs/WindowManager/Shell/res/layout/bubble_expanded_view.xml index cd15f25877fd..880e0e46b4a1 100644 --- a/libs/WindowManager/Shell/res/layout/bubble_expanded_view.xml +++ b/libs/WindowManager/Shell/res/layout/bubble_expanded_view.xml @@ -27,19 +27,6 @@ android:layout_height="@dimen/bubble_pointer_height" /> - <com.android.wm.shell.common.AlphaOptimizedButton - style="@android:style/Widget.DeviceDefault.Button.Borderless" - android:id="@+id/settings_button" - android:layout_gravity="start" - android:layout_width="wrap_content" - android:layout_height="40dp" - android:layout_marginTop="8dp" - android:layout_marginLeft="8dp" - android:focusable="true" - android:text="@string/manage_bubbles_text" - android:textSize="@*android:dimen/text_size_body_2_material" - android:background="@drawable/bubble_manage_btn_bg" - android:textColor="@*android:color/system_neutral1_50" - /> + <!-- Manage button added here. --> </com.android.wm.shell.bubbles.BubbleExpandedView> diff --git a/libs/WindowManager/Shell/res/layout/bubble_manage_button.xml b/libs/WindowManager/Shell/res/layout/bubble_manage_button.xml new file mode 100644 index 000000000000..ab02a2e6f91a --- /dev/null +++ b/libs/WindowManager/Shell/res/layout/bubble_manage_button.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2021 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. + --> +<com.android.wm.shell.common.AlphaOptimizedButton + xmlns:android="http://schemas.android.com/apk/res/android" + style="@android:style/Widget.DeviceDefault.Button.Borderless" + android:id="@+id/settings_button" + android:layout_gravity="start" + android:layout_width="wrap_content" + android:layout_height="40dp" + android:layout_marginTop="8dp" + android:layout_marginLeft="8dp" + android:focusable="true" + android:text="@string/manage_bubbles_text" + android:textSize="@*android:dimen/text_size_body_2_material" + android:textColor="@*android:color/system_neutral1_50" + android:background="@drawable/bubble_manage_btn_bg" + />
\ No newline at end of file diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java index 51964b4031ec..f5c453d942e1 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java @@ -34,7 +34,6 @@ import android.app.PendingIntent; import android.content.ComponentName; import android.content.Context; import android.content.Intent; -import android.content.res.Configuration; import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Bitmap; @@ -80,7 +79,7 @@ public class BubbleExpandedView extends LinearLayout { private int mPointerMargin; @Nullable private int[] mExpandedViewContainerLocation; - private AlphaOptimizedButton mSettingsIcon; + private AlphaOptimizedButton mManageButton; private TaskView mTaskView; private BubbleOverflowContainerView mOverflowView; @@ -104,7 +103,7 @@ public class BubbleExpandedView extends LinearLayout { private int mMinHeight; private int mOverflowHeight; - private int mSettingsIconHeight; + private int mManageButtonHeight; private int mPointerWidth; private int mPointerHeight; private float mPointerRadius; @@ -253,17 +252,15 @@ public class BubbleExpandedView extends LinearLayout { public BubbleExpandedView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); - updateDimensions(); } @SuppressLint("ClickableViewAccessibility") @Override protected void onFinishInflate() { super.onFinishInflate(); - - mSettingsIcon = findViewById(R.id.settings_button); - mSettingsIconHeight = getContext().getResources().getDimensionPixelSize( - R.dimen.bubble_manage_button_height); + mManageButton = (AlphaOptimizedButton) LayoutInflater.from(getContext()).inflate( + R.layout.bubble_manage_button, this /* parent */, false /* attach */); + updateDimensions(); mPointerView = findViewById(R.id.pointer_view); mCurrentPointer = mTopPointer; mPointerView.setVisibility(INVISIBLE); @@ -288,7 +285,7 @@ public class BubbleExpandedView extends LinearLayout { // ==> expanded view // ==> activity view // ==> manage button - bringChildToFront(mSettingsIcon); + bringChildToFront(mManageButton); applyThemeAttrs(); @@ -339,7 +336,7 @@ public class BubbleExpandedView extends LinearLayout { mExpandedViewContainer.setLayoutParams( new LinearLayout.LayoutParams(MATCH_PARENT, WRAP_CONTENT)); bringChildToFront(mOverflowView); - mSettingsIcon.setVisibility(GONE); + mManageButton.setVisibility(GONE); } else { mTaskView = new TaskView(mContext, mController.getTaskOrganizer()); mTaskView.setListener(mController.getMainExecutor(), mTaskViewListener); @@ -354,6 +351,8 @@ public class BubbleExpandedView extends LinearLayout { mOverflowHeight = res.getDimensionPixelSize(R.dimen.bubble_overflow_height); mExpandedViewPadding = res.getDimensionPixelSize(R.dimen.bubble_expanded_view_padding); + updateFontSize(); + mPointerMargin = res.getDimensionPixelSize(R.dimen.bubble_pointer_margin); mPointerWidth = res.getDimensionPixelSize(R.dimen.bubble_pointer_width); mPointerHeight = res.getDimensionPixelSize(R.dimen.bubble_pointer_height); @@ -366,25 +365,26 @@ public class BubbleExpandedView extends LinearLayout { mPointerWidth, mPointerHeight, true /* pointLeft */)); mRightPointer = new ShapeDrawable(TriangleShape.createHorizontal( mPointerWidth, mPointerHeight, false /* pointLeft */)); - - final float fontSize = mContext.getResources() - .getDimensionPixelSize(com.android.internal.R.dimen.text_size_body_2_material); - if (mSettingsIcon != null) { - mSettingsIcon.setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize); - } - if (mOverflowView != null) { - mOverflowView.updateFontSize(); - } if (mPointerView != null) { updatePointerView(); } + + mManageButtonHeight = res.getDimensionPixelSize(R.dimen.bubble_manage_button_height); + if (mManageButton != null) { + int visibility = mManageButton.getVisibility(); + removeView(mManageButton); + mManageButton = (AlphaOptimizedButton) LayoutInflater.from(getContext()).inflate( + R.layout.bubble_manage_button, this /* parent */, false /* attach */); + addView(mManageButton); + mManageButton.setVisibility(visibility); + } } void updateFontSize() { final float fontSize = mContext.getResources() .getDimensionPixelSize(com.android.internal.R.dimen.text_size_body_2_material); - if (mSettingsIcon != null) { - mSettingsIcon.setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize); + if (mManageButton != null) { + mManageButton.setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize); } if (mOverflowView != null) { mOverflowView.updateFontSize(); @@ -396,10 +396,7 @@ public class BubbleExpandedView extends LinearLayout { android.R.attr.dialogCornerRadius, android.R.attr.colorBackgroundFloating}); mCornerRadius = ta.getDimensionPixelSize(0, 0); - final int mode = - getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK; - final boolean isNightMode = (mode == Configuration.UI_MODE_NIGHT_YES); - mBackgroundColorFloating = ta.getColor(1, isNightMode ? Color.BLACK : Color.WHITE); + mBackgroundColorFloating = ta.getColor(1, Color.WHITE); mExpandedViewContainer.setBackgroundColor(mBackgroundColorFloating); ta.recycle(); @@ -489,7 +486,7 @@ public class BubbleExpandedView extends LinearLayout { // TODO: Could listener be passed when we pass StackView / can we avoid setting this like this void setManageClickListener(OnClickListener manageClickListener) { - mSettingsIcon.setOnClickListener(manageClickListener); + mManageButton.setOnClickListener(manageClickListener); } /** @@ -535,6 +532,9 @@ public class BubbleExpandedView extends LinearLayout { if (mTaskView != null) { mTaskView.setAlpha(alpha); } + if (mManageButton != null && mManageButton.getVisibility() == View.VISIBLE) { + mManageButton.setAlpha(alpha); + } } /** @@ -579,9 +579,9 @@ public class BubbleExpandedView extends LinearLayout { boolean isNew = mBubble == null || didBackingContentChange(bubble); if (isNew || bubble != null && bubble.getKey().equals(mBubble.getKey())) { mBubble = bubble; - mSettingsIcon.setContentDescription(getResources().getString( + mManageButton.setContentDescription(getResources().getString( R.string.bubbles_settings_button_description, bubble.getAppName())); - mSettingsIcon.setAccessibilityDelegate( + mManageButton.setAccessibilityDelegate( new AccessibilityDelegate() { @Override public void onInitializeAccessibilityNodeInfo(View host, @@ -666,7 +666,7 @@ public class BubbleExpandedView extends LinearLayout { // Remove top insets back here because availableRect.height would account for that ? mExpandedViewContainerLocation[1] - mPositioner.getInsets().top : 0; - int settingsHeight = mIsOverflow ? 0 : mSettingsIconHeight; + int settingsHeight = mIsOverflow ? 0 : mManageButtonHeight; return mPositioner.getAvailableRect().height() - expandedContainerY - getPaddingTop() @@ -756,7 +756,7 @@ public class BubbleExpandedView extends LinearLayout { * education about the manage button. */ public void getManageButtonBoundsOnScreen(Rect rect) { - mSettingsIcon.getBoundsOnScreen(rect); + mManageButton.getBoundsOnScreen(rect); } /** |