mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-20 03:08:19 +00:00
Merge "Optimizing some icon generation code:" into tm-qpr-dev
This commit is contained in:
@@ -19,11 +19,17 @@
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M17.6258,4.96L19.0358,6.37L7.4058,18.01L5.9958,16.6L17.6258,4.96ZM16.1358,3.62L4.1258,15.63L3.0158,19.83C2.9058,20.45 3.3858,21 3.9958,21C4.0558,21 4.1058,21 4.1658,20.99L8.3658,19.88L20.3758,7.86C20.7758,7.46 20.9958,6.93 20.9958,6.37C20.9958,5.81 20.7758,5.28 20.3758,4.88L19.1058,3.61C18.7158,3.22 18.1858,3 17.6258,3C17.0658,3 16.5358,3.22 16.1358,3.62Z"
|
||||
android:fillColor="#636C6F"/>
|
||||
<path
|
||||
android:pathData="M20.1936,15.3369C20.3748,16.3837 19.9151,17.5414 18.8846,18.7597C19.1546,18.872 19.4576,18.9452 19.7724,18.9867C20.0839,19.0278 20.3683,19.0325 20.5749,19.0266C20.6772,19.0236 20.7578,19.0181 20.8101,19.0138C20.8362,19.0116 20.855,19.0097 20.8657,19.0085L20.8754,19.0074L20.875,19.0075C21.4217,18.9385 21.9214,19.325 21.9918,19.8718C22.0624,20.4195 21.6756,20.9208 21.1279,20.9914L21,19.9996C21.1279,20.9914 21.1265,20.9916 21.1265,20.9916L21.1249,20.9918L21.1211,20.9923L21.1107,20.9935L21.0795,20.997C21.0542,20.9998 21.0199,21.0032 20.9775,21.0067C20.8929,21.0138 20.7753,21.0216 20.6323,21.0257C20.3481,21.0339 19.9533,21.0279 19.5109,20.9695C18.873,20.8854 18.0393,20.6793 17.3106,20.1662C16.9605,20.3559 16.5876,20.4952 16.2299,20.6003C15.5742,20.7927 14.8754,20.8968 14.2534,20.9534C13.6801,21.0055 13.4553,21.0037 13.1015,21.0008C13.0689,21.0005 13.0352,21.0002 13,21H12.8594C12.8214,21.0002 12.785,21.0006 12.7504,21.0009C12.6524,21.0019 12.5683,21.0027 12.5,21H12.0562C12.0277,21.0003 12.0054,21.0006 11.9926,21.001L11.9751,21H9L11,19H11.9795C11.9929,18.9997 12.0064,18.9997 12.0199,19H12.4117C12.4534,18.9996 12.4864,18.9995 12.5,19H12.9675C12.977,18.9999 12.9878,18.9999 13,19C13.0446,19.0003 13.0859,19.0007 13.1249,19.0011C13.4259,19.0038 13.591,19.0054 14.0723,18.9616C14.6201,18.9118 15.1795,18.8242 15.6665,18.6813C15.753,18.6559 15.8346,18.6295 15.9114,18.6022C15.0315,17.2981 14.7125,16.1044 15.015,15.0829C15.4095,13.7511 16.6784,13.2418 17.7026,13.2864C18.7262,13.3309 19.954,13.9529 20.1936,15.3369ZM16.9327,15.6508C16.873,15.8523 16.8651,16.3878 17.4697,17.334C18.2007,16.4284 18.2585,15.8839 18.2229,15.6781C18.1939,15.5108 18.0297,15.3025 17.6157,15.2845C17.2025,15.2665 16.9885,15.4626 16.9327,15.6508Z"
|
||||
android:fillColor="#636C6F"
|
||||
android:fillType="evenOdd"/>
|
||||
<group
|
||||
android:pivotY="12"
|
||||
android:pivotX="12"
|
||||
android:scaleX=".75"
|
||||
android:scaleY=".75">
|
||||
<path
|
||||
android:pathData="M17.6258,4.96L19.0358,6.37L7.4058,18.01L5.9958,16.6L17.6258,4.96ZM16.1358,3.62L4.1258,15.63L3.0158,19.83C2.9058,20.45 3.3858,21 3.9958,21C4.0558,21 4.1058,21 4.1658,20.99L8.3658,19.88L20.3758,7.86C20.7758,7.46 20.9958,6.93 20.9958,6.37C20.9958,5.81 20.7758,5.28 20.3758,4.88L19.1058,3.61C18.7158,3.22 18.1858,3 17.6258,3C17.0658,3 16.5358,3.22 16.1358,3.62Z"
|
||||
android:fillColor="#636C6F"/>
|
||||
<path
|
||||
android:pathData="M20.1936,15.3369C20.3748,16.3837 19.9151,17.5414 18.8846,18.7597C19.1546,18.872 19.4576,18.9452 19.7724,18.9867C20.0839,19.0278 20.3683,19.0325 20.5749,19.0266C20.6772,19.0236 20.7578,19.0181 20.8101,19.0138C20.8362,19.0116 20.855,19.0097 20.8657,19.0085L20.8754,19.0074L20.875,19.0075C21.4217,18.9385 21.9214,19.325 21.9918,19.8718C22.0624,20.4195 21.6756,20.9208 21.1279,20.9914L21,19.9996C21.1279,20.9914 21.1265,20.9916 21.1265,20.9916L21.1249,20.9918L21.1211,20.9923L21.1107,20.9935L21.0795,20.997C21.0542,20.9998 21.0199,21.0032 20.9775,21.0067C20.8929,21.0138 20.7753,21.0216 20.6323,21.0257C20.3481,21.0339 19.9533,21.0279 19.5109,20.9695C18.873,20.8854 18.0393,20.6793 17.3106,20.1662C16.9605,20.3559 16.5876,20.4952 16.2299,20.6003C15.5742,20.7927 14.8754,20.8968 14.2534,20.9534C13.6801,21.0055 13.4553,21.0037 13.1015,21.0008C13.0689,21.0005 13.0352,21.0002 13,21H12.8594C12.8214,21.0002 12.785,21.0006 12.7504,21.0009C12.6524,21.0019 12.5683,21.0027 12.5,21H12.0562C12.0277,21.0003 12.0054,21.0006 11.9926,21.001L11.9751,21H9L11,19H11.9795C11.9929,18.9997 12.0064,18.9997 12.0199,19H12.4117C12.4534,18.9996 12.4864,18.9995 12.5,19H12.9675C12.977,18.9999 12.9878,18.9999 13,19C13.0446,19.0003 13.0859,19.0007 13.1249,19.0011C13.4259,19.0038 13.591,19.0054 14.0723,18.9616C14.6201,18.9118 15.1795,18.8242 15.6665,18.6813C15.753,18.6559 15.8346,18.6295 15.9114,18.6022C15.0315,17.2981 14.7125,16.1044 15.015,15.0829C15.4095,13.7511 16.6784,13.2418 17.7026,13.2864C18.7262,13.3309 19.954,13.9529 20.1936,15.3369ZM16.9327,15.6508C16.873,15.8523 16.8651,16.3878 17.4697,17.334C18.2007,16.4284 18.2585,15.8839 18.2229,15.6781C18.1939,15.5108 18.0297,15.3025 17.6157,15.2845C17.2025,15.2665 16.9885,15.4626 16.9327,15.6508Z"
|
||||
android:fillColor="#636C6F"
|
||||
android:fillType="evenOdd"/>
|
||||
</group>
|
||||
</vector>
|
||||
|
||||
23
quickstep/res/layout/taskbar_all_apps_button.xml
Normal file
23
quickstep/res/layout/taskbar_all_apps_button.xml
Normal file
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2022 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.launcher3.views.IconButtonView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="@dimen/taskbar_icon_touch_size"
|
||||
android:layout_height="@dimen/taskbar_icon_touch_size"
|
||||
android:contentDescription="@string/all_apps_button_label"
|
||||
android:backgroundTint="@color/all_apps_button_bg_color"
|
||||
android:icon="@drawable/ic_all_apps_button"
|
||||
/>
|
||||
21
quickstep/res/layout/taskbar_floating_task_button.xml
Normal file
21
quickstep/res/layout/taskbar_floating_task_button.xml
Normal file
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2022 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.launcher3.views.IconButtonView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="@dimen/taskbar_icon_touch_size"
|
||||
android:layout_height="@dimen/taskbar_icon_touch_size"
|
||||
android:icon="@drawable/ic_floating_task_button"
|
||||
/>
|
||||
@@ -1,51 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2022 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.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.ContextThemeWrapper;
|
||||
|
||||
import com.android.launcher3.BubbleTextView;
|
||||
import com.android.launcher3.LauncherAppState;
|
||||
import com.android.launcher3.R;
|
||||
import com.android.launcher3.icons.FastBitmapDrawable;
|
||||
|
||||
/**
|
||||
* Button in Taskbar that opens something in a floating task.
|
||||
*/
|
||||
public class LaunchFloatingTaskButton extends BubbleTextView {
|
||||
|
||||
public LaunchFloatingTaskButton(Context context) {
|
||||
this(context, null);
|
||||
}
|
||||
|
||||
public LaunchFloatingTaskButton(Context context, AttributeSet attrs) {
|
||||
this(context, attrs, 0);
|
||||
}
|
||||
|
||||
public LaunchFloatingTaskButton(Context context, AttributeSet attrs, int defStyle) {
|
||||
super(context, attrs, defStyle);
|
||||
|
||||
Context theme = new ContextThemeWrapper(context, R.style.AllAppsButtonTheme);
|
||||
Bitmap bitmap = LauncherAppState.getInstance(context).getIconCache().getIconFactory()
|
||||
.createScaledBitmapWithShadow(
|
||||
theme.getDrawable(R.drawable.ic_floating_task_button));
|
||||
setIcon(new FastBitmapDrawable(bitmap));
|
||||
}
|
||||
}
|
||||
@@ -26,7 +26,6 @@ import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
import androidx.annotation.LayoutRes;
|
||||
@@ -47,7 +46,6 @@ import com.android.launcher3.model.data.ItemInfo;
|
||||
import com.android.launcher3.model.data.WorkspaceItemInfo;
|
||||
import com.android.launcher3.util.LauncherBindableItemsContainer;
|
||||
import com.android.launcher3.views.ActivityContext;
|
||||
import com.android.launcher3.views.AllAppsButton;
|
||||
import com.android.launcher3.views.DoubleShadowBubbleTextView;
|
||||
|
||||
import java.util.function.Predicate;
|
||||
@@ -81,12 +79,12 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar
|
||||
private @Nullable FolderIcon mLeaveBehindFolderIcon;
|
||||
|
||||
// Only non-null when device supports having an All Apps button.
|
||||
private @Nullable AllAppsButton mAllAppsButton;
|
||||
private @Nullable View mAllAppsButton;
|
||||
|
||||
private View mQsb;
|
||||
|
||||
// Only non-null when device supports having a floating task.
|
||||
private @Nullable BubbleTextView mFloatingTaskButton;
|
||||
private @Nullable View mFloatingTaskButton;
|
||||
private @Nullable Intent mFloatingTaskIntent;
|
||||
private static final boolean FLOATING_TASKS_ENABLED =
|
||||
SystemProperties.getBoolean("persist.wm.debug.floating_tasks", false);
|
||||
@@ -125,9 +123,8 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar
|
||||
mThemeIconsBackground = calculateThemeIconsBackground();
|
||||
|
||||
if (FeatureFlags.ENABLE_ALL_APPS_IN_TASKBAR.get()) {
|
||||
mAllAppsButton = new AllAppsButton(context);
|
||||
mAllAppsButton.setLayoutParams(
|
||||
new ViewGroup.LayoutParams(mIconTouchSize, mIconTouchSize));
|
||||
mAllAppsButton = LayoutInflater.from(context)
|
||||
.inflate(R.layout.taskbar_all_apps_button, this, false);
|
||||
mAllAppsButton.setPadding(mItemPadding, mItemPadding, mItemPadding, mItemPadding);
|
||||
}
|
||||
|
||||
@@ -137,9 +134,8 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar
|
||||
if (FLOATING_TASKS_ENABLED) {
|
||||
mFloatingTaskIntent = FloatingTaskIntentResolver.getIntent(context);
|
||||
if (mFloatingTaskIntent != null) {
|
||||
mFloatingTaskButton = new LaunchFloatingTaskButton(context);
|
||||
mFloatingTaskButton.setLayoutParams(
|
||||
new ViewGroup.LayoutParams(mIconTouchSize, mIconTouchSize));
|
||||
mFloatingTaskButton = LayoutInflater.from(context)
|
||||
.inflate(R.layout.taskbar_floating_task_button, this, false);
|
||||
mFloatingTaskButton.setPadding(mItemPadding, mItemPadding, mItemPadding,
|
||||
mItemPadding);
|
||||
} else {
|
||||
|
||||
@@ -18,27 +18,29 @@
|
||||
android:width="80dp"
|
||||
android:height="80dp"
|
||||
android:viewportWidth="80"
|
||||
android:viewportHeight="80"
|
||||
android:theme="@style/AllAppsTheme">
|
||||
<path
|
||||
android:pathData="M40,0.5L40,0.5c21.8,0 39.5,17.7 39.5,39.5l0,0c0,21.8 -17.7,39.5 -39.5,39.5l0,0C18.2,79.5 0.5,61.8 0.5,40l0,0C0.5,18.2 18.2,0.5 40,0.5z"
|
||||
android:fillColor="?attr/allAppsButtonBgColor"/>
|
||||
<path
|
||||
android:pathData="M26.8,32.1m-5.3,0a5.3,5.3 0,1 1,10.6 0a5.3,5.3 0,1 1,-10.6 0"
|
||||
android:fillColor="?attr/allAppsButtonColor1"/>
|
||||
<path
|
||||
android:pathData="M26.8,47.9m-5.3,0a5.3,5.3 0,1 1,10.6 0a5.3,5.3 0,1 1,-10.6 0"
|
||||
android:fillColor="?attr/allAppsButtonColor2"/>
|
||||
<path
|
||||
android:pathData="M40,32.1m-5.3,0a5.3,5.3 0,1 1,10.6 0a5.3,5.3 0,1 1,-10.6 0"
|
||||
android:fillColor="?attr/allAppsButtonColor3"/>
|
||||
<path
|
||||
android:pathData="M40,47.9m-5.3,0a5.3,5.3 0,1 1,10.6 0a5.3,5.3 0,1 1,-10.6 0"
|
||||
android:fillColor="?attr/allAppsButtonColor2"/>
|
||||
<path
|
||||
android:pathData="M53.2,32.1m-5.3,0a5.3,5.3 0,1 1,10.6 0a5.3,5.3 0,1 1,-10.6 0"
|
||||
android:fillColor="?attr/allAppsButtonColor4"/>
|
||||
<path
|
||||
android:pathData="M53.2,47.9m-5.3,0a5.3,5.3 0,1 1,10.6 0a5.3,5.3 0,1 1,-10.6 0"
|
||||
android:fillColor="?attr/allAppsButtonColor2"/>
|
||||
android:viewportHeight="80">
|
||||
<group
|
||||
android:pivotY="40"
|
||||
android:pivotX="40"
|
||||
android:scaleX=".88"
|
||||
android:scaleY=".88">
|
||||
<path
|
||||
android:pathData="M26.8,32.1m-5.3,0a5.3,5.3 0,1 1,10.6 0a5.3,5.3 0,1 1,-10.6 0"
|
||||
android:fillColor="@color/all_apps_button_color_1"/>
|
||||
<path
|
||||
android:pathData="M26.8,47.9m-5.3,0a5.3,5.3 0,1 1,10.6 0a5.3,5.3 0,1 1,-10.6 0"
|
||||
android:fillColor="@color/all_apps_button_color_2"/>
|
||||
<path
|
||||
android:pathData="M40,32.1m-5.3,0a5.3,5.3 0,1 1,10.6 0a5.3,5.3 0,1 1,-10.6 0"
|
||||
android:fillColor="@color/all_apps_button_color_3"/>
|
||||
<path
|
||||
android:pathData="M40,47.9m-5.3,0a5.3,5.3 0,1 1,10.6 0a5.3,5.3 0,1 1,-10.6 0"
|
||||
android:fillColor="@color/all_apps_button_color_2"/>
|
||||
<path
|
||||
android:pathData="M53.2,32.1m-5.3,0a5.3,5.3 0,1 1,10.6 0a5.3,5.3 0,1 1,-10.6 0"
|
||||
android:fillColor="@color/all_apps_button_color_4"/>
|
||||
<path
|
||||
android:pathData="M53.2,47.9m-5.3,0a5.3,5.3 0,1 1,10.6 0a5.3,5.3 0,1 1,-10.6 0"
|
||||
android:fillColor="@color/all_apps_button_color_2"/>
|
||||
</group>
|
||||
</vector>
|
||||
|
||||
@@ -56,12 +56,6 @@
|
||||
<attr name="preloadIconAccentColor" format="color" />
|
||||
<attr name="preloadIconBackgroundColor" format="color" />
|
||||
|
||||
<attr name="allAppsButtonBgColor" format="color" />
|
||||
<attr name="allAppsButtonColor1" format="color" />
|
||||
<attr name="allAppsButtonColor2" format="color" />
|
||||
<attr name="allAppsButtonColor3" format="color" />
|
||||
<attr name="allAppsButtonColor4" format="color" />
|
||||
|
||||
<!-- BubbleTextView specific attributes. -->
|
||||
<declare-styleable name="BubbleTextView">
|
||||
<attr name="layoutHorizontal" format="boolean" />
|
||||
|
||||
@@ -207,14 +207,6 @@
|
||||
<item name="android:importantForAccessibility">no</item>
|
||||
</style>
|
||||
|
||||
<style name="AllAppsButtonTheme">
|
||||
<item name="allAppsButtonBgColor">@color/all_apps_button_bg_color</item>
|
||||
<item name="allAppsButtonColor1">@color/all_apps_button_color_1</item>
|
||||
<item name="allAppsButtonColor2">@color/all_apps_button_color_2</item>
|
||||
<item name="allAppsButtonColor3">@color/all_apps_button_color_3</item>
|
||||
<item name="allAppsButtonColor4">@color/all_apps_button_color_4</item>
|
||||
</style>
|
||||
|
||||
<style name="AllAppsTheme">
|
||||
<item name="disabledIconAlpha">.54</item>
|
||||
</style>
|
||||
|
||||
@@ -76,7 +76,8 @@ public class ShortcutCachingLogic implements CachingLogic<ShortcutInfo> {
|
||||
Drawable unbadgedDrawable = ShortcutCachingLogic.getIcon(
|
||||
context, info, LauncherAppState.getIDP(context).fillResIconDpi);
|
||||
if (unbadgedDrawable == null) return BitmapInfo.LOW_RES_INFO;
|
||||
return new BitmapInfo(li.createScaledBitmapWithoutShadow(unbadgedDrawable),
|
||||
return new BitmapInfo(
|
||||
li.createScaledBitmap(unbadgedDrawable, BaseIconFactory.MODE_WITH_SHADOW),
|
||||
Themes.getColorAccent(context));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2022 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.Bitmap;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.ContextThemeWrapper;
|
||||
|
||||
import com.android.launcher3.BubbleTextView;
|
||||
import com.android.launcher3.LauncherAppState;
|
||||
import com.android.launcher3.R;
|
||||
import com.android.launcher3.icons.FastBitmapDrawable;
|
||||
|
||||
/**
|
||||
* Button in Taskbar that opens All Apps.
|
||||
*/
|
||||
public class AllAppsButton extends BubbleTextView {
|
||||
|
||||
public AllAppsButton(Context context) {
|
||||
this(context, null);
|
||||
}
|
||||
|
||||
public AllAppsButton(Context context, AttributeSet attrs) {
|
||||
this(context, attrs, 0);
|
||||
}
|
||||
|
||||
public AllAppsButton(Context context, AttributeSet attrs, int defStyle) {
|
||||
super(context, attrs, defStyle);
|
||||
|
||||
Context theme = new ContextThemeWrapper(context, R.style.AllAppsButtonTheme);
|
||||
Bitmap bitmap = LauncherAppState.getInstance(context).getIconCache().getIconFactory()
|
||||
.createScaledBitmapWithShadow(theme.getDrawable(R.drawable.ic_all_apps_button));
|
||||
setIcon(new FastBitmapDrawable(bitmap));
|
||||
setContentDescription(context.getString(R.string.all_apps_button_label));
|
||||
}
|
||||
}
|
||||
94
src/com/android/launcher3/views/IconButtonView.java
Normal file
94
src/com/android/launcher3/views/IconButtonView.java
Normal file
@@ -0,0 +1,94 @@
|
||||
/*
|
||||
* Copyright (C) 2022 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.annotation.TargetApi;
|
||||
import android.content.Context;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.content.res.TypedArray;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BlendMode;
|
||||
import android.graphics.BlendModeColorFilter;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Build;
|
||||
import android.util.AttributeSet;
|
||||
|
||||
import com.android.launcher3.BubbleTextView;
|
||||
import com.android.launcher3.icons.BaseIconFactory;
|
||||
import com.android.launcher3.icons.FastBitmapDrawable;
|
||||
import com.android.launcher3.icons.LauncherIcons;
|
||||
|
||||
/**
|
||||
* Button in Taskbar that shows a tinted background and foreground.
|
||||
*/
|
||||
public class IconButtonView extends BubbleTextView {
|
||||
|
||||
private static final int[] ATTRS = {android.R.attr.icon};
|
||||
|
||||
public IconButtonView(Context context) {
|
||||
this(context, null);
|
||||
}
|
||||
|
||||
public IconButtonView(Context context, AttributeSet attrs) {
|
||||
this(context, attrs, 0);
|
||||
}
|
||||
|
||||
public IconButtonView(Context context, AttributeSet attrs, int defStyle) {
|
||||
super(context, attrs, defStyle);
|
||||
|
||||
TypedArray a = context.obtainStyledAttributes(attrs, ATTRS, defStyle, 0);
|
||||
Drawable fg = a.getDrawable(0);
|
||||
a.recycle();
|
||||
|
||||
ColorStateList tintList = getBackgroundTintList();
|
||||
int tint = tintList == null ? Color.WHITE : tintList.getDefaultColor();
|
||||
|
||||
if (fg == null) {
|
||||
fg = new ColorDrawable(Color.TRANSPARENT);
|
||||
}
|
||||
try (BaseIconFactory factory = LauncherIcons.obtain(context)) {
|
||||
setIcon(new IconDrawable(factory.getWhiteShadowLayer(), tint, fg));
|
||||
}
|
||||
}
|
||||
|
||||
private static class IconDrawable extends FastBitmapDrawable {
|
||||
|
||||
private final Drawable mFg;
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.TIRAMISU)
|
||||
IconDrawable(Bitmap b, int colorBg, Drawable fg) {
|
||||
super(b);
|
||||
mPaint.setColorFilter(new BlendModeColorFilter(colorBg, BlendMode.SRC_IN));
|
||||
mFg = fg;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawInternal(Canvas canvas, Rect bounds) {
|
||||
super.drawInternal(canvas, bounds);
|
||||
mFg.draw(canvas);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onBoundsChange(Rect bounds) {
|
||||
super.onBoundsChange(bounds);
|
||||
mFg.setBounds(bounds);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -39,6 +39,7 @@ import com.android.launcher3.R;
|
||||
import com.android.launcher3.dragndrop.DragOptions;
|
||||
import com.android.launcher3.dragndrop.DraggableView;
|
||||
import com.android.launcher3.graphics.DragPreviewProvider;
|
||||
import com.android.launcher3.icons.BaseIconFactory;
|
||||
import com.android.launcher3.icons.FastBitmapDrawable;
|
||||
import com.android.launcher3.icons.LauncherIcons;
|
||||
import com.android.launcher3.icons.RoundDrawableWrapper;
|
||||
@@ -181,7 +182,8 @@ public class PendingItemDragHelper extends DragPreviewProvider {
|
||||
PendingAddShortcutInfo createShortcutInfo = (PendingAddShortcutInfo) mAddInfo;
|
||||
Drawable icon = createShortcutInfo.activityInfo.getFullResIcon(app.getIconCache());
|
||||
LauncherIcons li = LauncherIcons.obtain(launcher);
|
||||
preview = new FastBitmapDrawable(li.createScaledBitmapWithoutShadow(icon));
|
||||
preview = new FastBitmapDrawable(
|
||||
li.createScaledBitmap(icon, BaseIconFactory.MODE_DEFAULT));
|
||||
previewWidth = preview.getIntrinsicWidth();
|
||||
previewHeight = preview.getIntrinsicHeight();
|
||||
li.recycle();
|
||||
|
||||
Reference in New Issue
Block a user