Loading quickstep/res/layout-land/keyboard_quick_switch_taskview.xml +18 −16 Original line number Diff line number Diff line Loading @@ -36,19 +36,19 @@ app:layout_constraintEnd_toEndOf="parent"> <include layout="@layout/keyboard_quick_switch_thumbnail" android:id="@+id/thumbnail1" layout="@layout/keyboard_quick_switch_taskview_thumbnail" android:id="@+id/thumbnail_1" android:layout_width="0dp" android:layout_height="match_parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toStartOf="@id/thumbnail2"/> app:layout_constraintEnd_toStartOf="@id/thumbnail_2"/> <include layout="@layout/keyboard_quick_switch_thumbnail" android:id="@+id/thumbnail2" layout="@layout/keyboard_quick_switch_taskview_thumbnail" android:id="@+id/thumbnail_2" android:layout_width="0dp" android:layout_height="match_parent" android:visibility="gone" Loading @@ -56,31 +56,33 @@ app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@id/thumbnail1" app:layout_constraintStart_toEndOf="@id/thumbnail_1" app:layout_constraintEnd_toEndOf="parent"/> <ImageView android:id="@+id/icon1" android:id="@+id/icon_1" android:layout_width="@dimen/keyboard_quick_switch_taskview_icon_size" android:layout_height="@dimen/keyboard_quick_switch_taskview_icon_size" android:layout_marginTop="@dimen/keyboard_quick_switch_taskview_icon_margin" android:layout_marginStart="@dimen/keyboard_quick_switch_taskview_icon_margin" android:importantForAccessibility="no" android:scaleType="centerCrop" app:layout_constraintTop_toTopOf="@id/thumbnail1" app:layout_constraintStart_toStartOf="@id/thumbnail1"/> app:layout_constraintTop_toTopOf="@id/thumbnail_1" app:layout_constraintBottom_toBottomOf="@id/thumbnail_1" app:layout_constraintStart_toStartOf="@id/thumbnail_1" app:layout_constraintEnd_toEndOf="@id/thumbnail_1"/> <ImageView android:id="@+id/icon2" android:id="@+id/icon_2" android:layout_width="@dimen/keyboard_quick_switch_taskview_icon_size" android:layout_height="@dimen/keyboard_quick_switch_taskview_icon_size" android:layout_marginTop="@dimen/keyboard_quick_switch_taskview_icon_margin" android:layout_marginStart="@dimen/keyboard_quick_switch_taskview_icon_margin" android:importantForAccessibility="no" android:visibility="gone" android:scaleType="centerCrop" app:layout_constraintTop_toTopOf="@id/thumbnail2" app:layout_constraintStart_toStartOf="@id/thumbnail2"/> app:layout_constraintTop_toTopOf="@id/thumbnail_2" app:layout_constraintBottom_toBottomOf="@id/thumbnail_2" app:layout_constraintStart_toStartOf="@id/thumbnail_2" app:layout_constraintEnd_toEndOf="@id/thumbnail_2"/> </androidx.constraintlayout.widget.ConstraintLayout> Loading quickstep/res/layout/keyboard_quick_switch_taskview.xml +18 −16 Original line number Diff line number Diff line Loading @@ -36,51 +36,53 @@ app:layout_constraintEnd_toEndOf="parent"> <include layout="@layout/keyboard_quick_switch_thumbnail" android:id="@+id/thumbnail1" layout="@layout/keyboard_quick_switch_taskview_thumbnail" android:id="@+id/thumbnail_1" android:layout_width="match_parent" android:layout_height="0dp" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toTopOf="@id/thumbnail2" app:layout_constraintBottom_toTopOf="@id/thumbnail_2" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"/> <include layout="@layout/keyboard_quick_switch_thumbnail" android:id="@+id/thumbnail2" layout="@layout/keyboard_quick_switch_taskview_thumbnail" android:id="@+id/thumbnail_2" android:layout_width="match_parent" android:layout_height="0dp" android:visibility="gone" android:layout_marginTop="@dimen/keyboard_quick_switch_split_view_spacing" app:layout_constraintTop_toBottomOf="@id/thumbnail1" app:layout_constraintTop_toBottomOf="@id/thumbnail_1" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"/> <ImageView android:id="@+id/icon1" android:id="@+id/icon_1" android:layout_width="@dimen/keyboard_quick_switch_taskview_icon_size" android:layout_height="@dimen/keyboard_quick_switch_taskview_icon_size" android:layout_marginTop="@dimen/keyboard_quick_switch_taskview_icon_margin" android:layout_marginStart="@dimen/keyboard_quick_switch_taskview_icon_margin" android:importantForAccessibility="no" android:scaleType="centerCrop" app:layout_constraintTop_toTopOf="@id/thumbnail1" app:layout_constraintStart_toStartOf="@id/thumbnail1"/> app:layout_constraintTop_toTopOf="@id/thumbnail_1" app:layout_constraintBottom_toBottomOf="@id/thumbnail_1" app:layout_constraintStart_toStartOf="@id/thumbnail_1" app:layout_constraintEnd_toEndOf="@id/thumbnail_1"/> <ImageView android:id="@+id/icon2" android:id="@+id/icon_2" android:layout_width="@dimen/keyboard_quick_switch_taskview_icon_size" android:layout_height="@dimen/keyboard_quick_switch_taskview_icon_size" android:layout_marginTop="@dimen/keyboard_quick_switch_taskview_icon_margin" android:layout_marginStart="@dimen/keyboard_quick_switch_taskview_icon_margin" android:importantForAccessibility="no" android:visibility="gone" android:scaleType="centerCrop" app:layout_constraintTop_toTopOf="@id/thumbnail2" app:layout_constraintStart_toStartOf="@id/thumbnail2"/> app:layout_constraintTop_toTopOf="@id/thumbnail_2" app:layout_constraintBottom_toBottomOf="@id/thumbnail_2" app:layout_constraintStart_toStartOf="@id/thumbnail_2" app:layout_constraintEnd_toEndOf="@id/thumbnail_2"/> </androidx.constraintlayout.widget.ConstraintLayout> Loading quickstep/res/layout/keyboard_quick_switch_thumbnail.xml→quickstep/res/layout/keyboard_quick_switch_taskview_thumbnail.xml +0 −0 File moved. View file quickstep/res/values/dimens.xml +1 −2 Original line number Diff line number Diff line Loading @@ -443,8 +443,7 @@ <dimen name="keyboard_quick_switch_border_width">4dp</dimen> <dimen name="keyboard_quick_switch_taskview_width">104dp</dimen> <dimen name="keyboard_quick_switch_taskview_height">134dp</dimen> <dimen name="keyboard_quick_switch_taskview_icon_size">28dp</dimen> <dimen name="keyboard_quick_switch_taskview_icon_margin">4dp</dimen> <dimen name="keyboard_quick_switch_taskview_icon_size">52dp</dimen> <dimen name="keyboard_quick_switch_recents_icon_size">20dp</dimen> <dimen name="keyboard_quick_switch_margin_top">56dp</dimen> <dimen name="keyboard_quick_switch_margin_ends">16dp</dimen> Loading quickstep/src/com/android/launcher3/taskbar/BlurredBitmapDrawable.kt 0 → 100644 +59 −0 Original line number Diff line number Diff line /* * Copyright (C) 2024 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.taskbar import android.graphics.Bitmap import android.graphics.Canvas import android.graphics.PixelFormat import android.graphics.RenderEffect import android.graphics.RenderNode import android.graphics.Shader import android.graphics.drawable.BitmapDrawable import android.graphics.drawable.DrawableWrapper /* BitmapDrawable that can blur the given bitmap. */ class BlurredBitmapDrawable(bitmap: Bitmap?, radiusX: Float, radiusY: Float) : DrawableWrapper(BitmapDrawable(bitmap)) { private val mBlurRenderNode: RenderNode = RenderNode("BlurredConstraintLayoutBlurNode") constructor(bitmap: Bitmap?, radius: Float) : this(bitmap, radius, radius) init { mBlurRenderNode.setRenderEffect( RenderEffect.createBlurEffect(radiusX, radiusY, Shader.TileMode.CLAMP) ) } override fun draw(canvas: Canvas) { if (!canvas.isHardwareAccelerated) { super.draw(canvas) return } mBlurRenderNode.setPosition(bounds) if (!mBlurRenderNode.hasDisplayList()) { // Record render node if its display list is not recorded or discarded // (which happens when it's no longer drawn by anything). val recordingCanvas = mBlurRenderNode.beginRecording() super.draw(recordingCanvas) mBlurRenderNode.endRecording() } canvas.drawRenderNode(mBlurRenderNode) } override fun getOpacity(): Int { return PixelFormat.OPAQUE } } Loading
quickstep/res/layout-land/keyboard_quick_switch_taskview.xml +18 −16 Original line number Diff line number Diff line Loading @@ -36,19 +36,19 @@ app:layout_constraintEnd_toEndOf="parent"> <include layout="@layout/keyboard_quick_switch_thumbnail" android:id="@+id/thumbnail1" layout="@layout/keyboard_quick_switch_taskview_thumbnail" android:id="@+id/thumbnail_1" android:layout_width="0dp" android:layout_height="match_parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toStartOf="@id/thumbnail2"/> app:layout_constraintEnd_toStartOf="@id/thumbnail_2"/> <include layout="@layout/keyboard_quick_switch_thumbnail" android:id="@+id/thumbnail2" layout="@layout/keyboard_quick_switch_taskview_thumbnail" android:id="@+id/thumbnail_2" android:layout_width="0dp" android:layout_height="match_parent" android:visibility="gone" Loading @@ -56,31 +56,33 @@ app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@id/thumbnail1" app:layout_constraintStart_toEndOf="@id/thumbnail_1" app:layout_constraintEnd_toEndOf="parent"/> <ImageView android:id="@+id/icon1" android:id="@+id/icon_1" android:layout_width="@dimen/keyboard_quick_switch_taskview_icon_size" android:layout_height="@dimen/keyboard_quick_switch_taskview_icon_size" android:layout_marginTop="@dimen/keyboard_quick_switch_taskview_icon_margin" android:layout_marginStart="@dimen/keyboard_quick_switch_taskview_icon_margin" android:importantForAccessibility="no" android:scaleType="centerCrop" app:layout_constraintTop_toTopOf="@id/thumbnail1" app:layout_constraintStart_toStartOf="@id/thumbnail1"/> app:layout_constraintTop_toTopOf="@id/thumbnail_1" app:layout_constraintBottom_toBottomOf="@id/thumbnail_1" app:layout_constraintStart_toStartOf="@id/thumbnail_1" app:layout_constraintEnd_toEndOf="@id/thumbnail_1"/> <ImageView android:id="@+id/icon2" android:id="@+id/icon_2" android:layout_width="@dimen/keyboard_quick_switch_taskview_icon_size" android:layout_height="@dimen/keyboard_quick_switch_taskview_icon_size" android:layout_marginTop="@dimen/keyboard_quick_switch_taskview_icon_margin" android:layout_marginStart="@dimen/keyboard_quick_switch_taskview_icon_margin" android:importantForAccessibility="no" android:visibility="gone" android:scaleType="centerCrop" app:layout_constraintTop_toTopOf="@id/thumbnail2" app:layout_constraintStart_toStartOf="@id/thumbnail2"/> app:layout_constraintTop_toTopOf="@id/thumbnail_2" app:layout_constraintBottom_toBottomOf="@id/thumbnail_2" app:layout_constraintStart_toStartOf="@id/thumbnail_2" app:layout_constraintEnd_toEndOf="@id/thumbnail_2"/> </androidx.constraintlayout.widget.ConstraintLayout> Loading
quickstep/res/layout/keyboard_quick_switch_taskview.xml +18 −16 Original line number Diff line number Diff line Loading @@ -36,51 +36,53 @@ app:layout_constraintEnd_toEndOf="parent"> <include layout="@layout/keyboard_quick_switch_thumbnail" android:id="@+id/thumbnail1" layout="@layout/keyboard_quick_switch_taskview_thumbnail" android:id="@+id/thumbnail_1" android:layout_width="match_parent" android:layout_height="0dp" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toTopOf="@id/thumbnail2" app:layout_constraintBottom_toTopOf="@id/thumbnail_2" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"/> <include layout="@layout/keyboard_quick_switch_thumbnail" android:id="@+id/thumbnail2" layout="@layout/keyboard_quick_switch_taskview_thumbnail" android:id="@+id/thumbnail_2" android:layout_width="match_parent" android:layout_height="0dp" android:visibility="gone" android:layout_marginTop="@dimen/keyboard_quick_switch_split_view_spacing" app:layout_constraintTop_toBottomOf="@id/thumbnail1" app:layout_constraintTop_toBottomOf="@id/thumbnail_1" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"/> <ImageView android:id="@+id/icon1" android:id="@+id/icon_1" android:layout_width="@dimen/keyboard_quick_switch_taskview_icon_size" android:layout_height="@dimen/keyboard_quick_switch_taskview_icon_size" android:layout_marginTop="@dimen/keyboard_quick_switch_taskview_icon_margin" android:layout_marginStart="@dimen/keyboard_quick_switch_taskview_icon_margin" android:importantForAccessibility="no" android:scaleType="centerCrop" app:layout_constraintTop_toTopOf="@id/thumbnail1" app:layout_constraintStart_toStartOf="@id/thumbnail1"/> app:layout_constraintTop_toTopOf="@id/thumbnail_1" app:layout_constraintBottom_toBottomOf="@id/thumbnail_1" app:layout_constraintStart_toStartOf="@id/thumbnail_1" app:layout_constraintEnd_toEndOf="@id/thumbnail_1"/> <ImageView android:id="@+id/icon2" android:id="@+id/icon_2" android:layout_width="@dimen/keyboard_quick_switch_taskview_icon_size" android:layout_height="@dimen/keyboard_quick_switch_taskview_icon_size" android:layout_marginTop="@dimen/keyboard_quick_switch_taskview_icon_margin" android:layout_marginStart="@dimen/keyboard_quick_switch_taskview_icon_margin" android:importantForAccessibility="no" android:visibility="gone" android:scaleType="centerCrop" app:layout_constraintTop_toTopOf="@id/thumbnail2" app:layout_constraintStart_toStartOf="@id/thumbnail2"/> app:layout_constraintTop_toTopOf="@id/thumbnail_2" app:layout_constraintBottom_toBottomOf="@id/thumbnail_2" app:layout_constraintStart_toStartOf="@id/thumbnail_2" app:layout_constraintEnd_toEndOf="@id/thumbnail_2"/> </androidx.constraintlayout.widget.ConstraintLayout> Loading
quickstep/res/layout/keyboard_quick_switch_thumbnail.xml→quickstep/res/layout/keyboard_quick_switch_taskview_thumbnail.xml +0 −0 File moved. View file
quickstep/res/values/dimens.xml +1 −2 Original line number Diff line number Diff line Loading @@ -443,8 +443,7 @@ <dimen name="keyboard_quick_switch_border_width">4dp</dimen> <dimen name="keyboard_quick_switch_taskview_width">104dp</dimen> <dimen name="keyboard_quick_switch_taskview_height">134dp</dimen> <dimen name="keyboard_quick_switch_taskview_icon_size">28dp</dimen> <dimen name="keyboard_quick_switch_taskview_icon_margin">4dp</dimen> <dimen name="keyboard_quick_switch_taskview_icon_size">52dp</dimen> <dimen name="keyboard_quick_switch_recents_icon_size">20dp</dimen> <dimen name="keyboard_quick_switch_margin_top">56dp</dimen> <dimen name="keyboard_quick_switch_margin_ends">16dp</dimen> Loading
quickstep/src/com/android/launcher3/taskbar/BlurredBitmapDrawable.kt 0 → 100644 +59 −0 Original line number Diff line number Diff line /* * Copyright (C) 2024 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.taskbar import android.graphics.Bitmap import android.graphics.Canvas import android.graphics.PixelFormat import android.graphics.RenderEffect import android.graphics.RenderNode import android.graphics.Shader import android.graphics.drawable.BitmapDrawable import android.graphics.drawable.DrawableWrapper /* BitmapDrawable that can blur the given bitmap. */ class BlurredBitmapDrawable(bitmap: Bitmap?, radiusX: Float, radiusY: Float) : DrawableWrapper(BitmapDrawable(bitmap)) { private val mBlurRenderNode: RenderNode = RenderNode("BlurredConstraintLayoutBlurNode") constructor(bitmap: Bitmap?, radius: Float) : this(bitmap, radius, radius) init { mBlurRenderNode.setRenderEffect( RenderEffect.createBlurEffect(radiusX, radiusY, Shader.TileMode.CLAMP) ) } override fun draw(canvas: Canvas) { if (!canvas.isHardwareAccelerated) { super.draw(canvas) return } mBlurRenderNode.setPosition(bounds) if (!mBlurRenderNode.hasDisplayList()) { // Record render node if its display list is not recorded or discarded // (which happens when it's no longer drawn by anything). val recordingCanvas = mBlurRenderNode.beginRecording() super.draw(recordingCanvas) mBlurRenderNode.endRecording() } canvas.drawRenderNode(mBlurRenderNode) } override fun getOpacity(): Int { return PixelFormat.OPAQUE } }