mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-03-02 00:36:49 +00:00
Updating icon badging logic
Bug: 201682172 Test: Manual Change-Id: I57421b0c77e12f1cd464e532d2a1383c2cf93981
This commit is contained in:
@@ -25,15 +25,10 @@ import android.graphics.Color;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.graphics.PorterDuffXfermode;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.RectF;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Handler;
|
||||
import android.os.Process;
|
||||
import android.os.UserHandle;
|
||||
import android.util.ArrayMap;
|
||||
import android.util.Log;
|
||||
import android.util.Size;
|
||||
|
||||
@@ -44,7 +39,6 @@ import com.android.launcher3.LauncherAppState;
|
||||
import com.android.launcher3.R;
|
||||
import com.android.launcher3.Utilities;
|
||||
import com.android.launcher3.icons.BitmapRenderer;
|
||||
import com.android.launcher3.icons.FastBitmapDrawable;
|
||||
import com.android.launcher3.icons.LauncherIcons;
|
||||
import com.android.launcher3.icons.ShadowGenerator;
|
||||
import com.android.launcher3.icons.cache.HandlerRunnable;
|
||||
@@ -65,9 +59,6 @@ public class DatabaseWidgetPreviewLoader {
|
||||
private final Context mContext;
|
||||
private final float mPreviewBoxCornerRadius;
|
||||
|
||||
private final UserHandle mMyUser = Process.myUserHandle();
|
||||
private final ArrayMap<UserHandle, Bitmap> mUserBadges = new ArrayMap<>();
|
||||
|
||||
public DatabaseWidgetPreviewLoader(Context context) {
|
||||
mContext = context;
|
||||
float previewCornerRadius = RoundedCornerEnforcement.computeEnforcedRadius(context);
|
||||
@@ -108,52 +99,6 @@ public class DatabaseWidgetPreviewLoader {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a drawable that can be used as a badge for the user or null.
|
||||
*/
|
||||
// @UiThread
|
||||
public Drawable getBadgeForUser(UserHandle user, int badgeSize) {
|
||||
if (mMyUser.equals(user)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
Bitmap badgeBitmap = getUserBadge(user, badgeSize);
|
||||
FastBitmapDrawable d = new FastBitmapDrawable(badgeBitmap);
|
||||
d.setFilterBitmap(true);
|
||||
d.setBounds(0, 0, badgeBitmap.getWidth(), badgeBitmap.getHeight());
|
||||
return d;
|
||||
}
|
||||
|
||||
private Bitmap getUserBadge(UserHandle user, int badgeSize) {
|
||||
synchronized (mUserBadges) {
|
||||
Bitmap badgeBitmap = mUserBadges.get(user);
|
||||
if (badgeBitmap != null) {
|
||||
return badgeBitmap;
|
||||
}
|
||||
|
||||
final Resources res = mContext.getResources();
|
||||
badgeBitmap = Bitmap.createBitmap(badgeSize, badgeSize, Bitmap.Config.ARGB_8888);
|
||||
|
||||
Drawable drawable = mContext.getPackageManager().getUserBadgedDrawableForDensity(
|
||||
new BitmapDrawable(res, badgeBitmap), user,
|
||||
new Rect(0, 0, badgeSize, badgeSize),
|
||||
0);
|
||||
if (drawable instanceof BitmapDrawable) {
|
||||
badgeBitmap = ((BitmapDrawable) drawable).getBitmap();
|
||||
} else {
|
||||
badgeBitmap.eraseColor(Color.TRANSPARENT);
|
||||
Canvas c = new Canvas(badgeBitmap);
|
||||
drawable.setBounds(0, 0, badgeSize, badgeSize);
|
||||
drawable.draw(c);
|
||||
c.setBitmap(null);
|
||||
}
|
||||
|
||||
mUserBadges.put(user, badgeBitmap);
|
||||
return badgeBitmap;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Generates the widget preview from either the {@link WidgetManagerHelper} or cache
|
||||
* and add badge at the bottom right corner.
|
||||
@@ -318,8 +263,8 @@ public class DatabaseWidgetPreviewLoader {
|
||||
LauncherIcons li = LauncherIcons.obtain(mContext);
|
||||
Drawable icon = li.createBadgedIconBitmap(
|
||||
mutateOnMainThread(info.getFullResIcon(
|
||||
LauncherAppState.getInstance(mContext).getIconCache())),
|
||||
Process.myUserHandle(), 0).newIcon(mContext);
|
||||
LauncherAppState.getInstance(mContext).getIconCache())))
|
||||
.newIcon(mContext);
|
||||
li.recycle();
|
||||
|
||||
icon.setBounds(padding, padding, padding + iconSize, padding + iconSize);
|
||||
|
||||
Reference in New Issue
Block a user