From 84e2436220c5141748daea201ee367f22d258c89 Mon Sep 17 00:00:00 2001 From: Jon Miranda Date: Tue, 13 Feb 2018 16:18:19 -0800 Subject: [PATCH] Update widget full sheet / bottom sheet to have top rounded corners. Bug: 71775241 Change-Id: I11b5adc555f48f44cf8167e8699cae1dfe164736 --- res/drawable/round_rect_primary.xml | 2 +- res/drawable/top_round_rect_primary.xml | 26 ++++++++ res/layout/widgets_bottom_sheet.xml | 2 +- res/layout/widgets_full_sheet.xml | 4 +- .../launcher3/views/TopRoundedCornerView.java | 62 +++++++++++++++++++ .../launcher3/widget/WidgetsFullSheet.java | 1 + 6 files changed, 93 insertions(+), 4 deletions(-) create mode 100644 res/drawable/top_round_rect_primary.xml create mode 100644 src/com/android/launcher3/views/TopRoundedCornerView.java diff --git a/res/drawable/round_rect_primary.xml b/res/drawable/round_rect_primary.xml index 9f8f4da484..16310f8bdc 100644 --- a/res/drawable/round_rect_primary.xml +++ b/res/drawable/round_rect_primary.xml @@ -17,5 +17,5 @@ - + diff --git a/res/drawable/top_round_rect_primary.xml b/res/drawable/top_round_rect_primary.xml new file mode 100644 index 0000000000..1caaa026f0 --- /dev/null +++ b/res/drawable/top_round_rect_primary.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/res/layout/widgets_bottom_sheet.xml b/res/layout/widgets_bottom_sheet.xml index e8c6961f43..6bf90481ad 100644 --- a/res/layout/widgets_bottom_sheet.xml +++ b/res/layout/widgets_bottom_sheet.xml @@ -20,7 +20,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingTop="28dp" - android:background="?android:attr/colorPrimary" + android:background="@drawable/top_round_rect_primary" android:elevation="@dimen/deep_shortcuts_elevation" android:layout_gravity="bottom" android:theme="?attr/widgetsTheme"> diff --git a/res/layout/widgets_full_sheet.xml b/res/layout/widgets_full_sheet.xml index 153529968f..20eca9f25d 100644 --- a/res/layout/widgets_full_sheet.xml +++ b/res/layout/widgets_full_sheet.xml @@ -25,7 +25,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" /> - - + \ No newline at end of file diff --git a/src/com/android/launcher3/views/TopRoundedCornerView.java b/src/com/android/launcher3/views/TopRoundedCornerView.java new file mode 100644 index 0000000000..ba223c4986 --- /dev/null +++ b/src/com/android/launcher3/views/TopRoundedCornerView.java @@ -0,0 +1,62 @@ +/* + * 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. + */ +package com.android.launcher3.views; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Path; +import android.graphics.RectF; +import android.util.AttributeSet; +import android.widget.FrameLayout; + +import com.android.launcher3.R; + +/** + * View with top rounded corners. + */ +public class TopRoundedCornerView extends FrameLayout { + + private final RectF mRect = new RectF(); + private final Path mClipPath = new Path(); + private float[] mRadii; + + public TopRoundedCornerView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + + int radius = getResources().getDimensionPixelSize(R.dimen.bg_round_rect_radius); + mRadii = new float[] {radius, radius, radius, radius, 0, 0, 0, 0}; + } + + public TopRoundedCornerView(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + @Override + public void draw(Canvas canvas) { + canvas.save(); + canvas.clipPath(mClipPath); + super.draw(canvas); + canvas.restore(); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + mRect.set(0, 0, getMeasuredWidth(), getMeasuredHeight()); + mClipPath.reset(); + mClipPath.addRoundRect(mRect, mRadii, Path.Direction.CW); + } +} diff --git a/src/com/android/launcher3/widget/WidgetsFullSheet.java b/src/com/android/launcher3/widget/WidgetsFullSheet.java index d62a90964b..e461afc201 100644 --- a/src/com/android/launcher3/widget/WidgetsFullSheet.java +++ b/src/com/android/launcher3/widget/WidgetsFullSheet.java @@ -115,6 +115,7 @@ public class WidgetsFullSheet extends BaseWidgetSheet mGradientView.setVisibility(View.INVISIBLE); widthUsed = 0; } else { + mGradientView.setVisibility(View.VISIBLE); Rect padding = mLauncher.getDeviceProfile().workspacePadding; widthUsed = Math.max(padding.left + padding.right, 2 * (mInsets.left + mInsets.right));