gpt4 book ai didi

java - 通知大图标看起来很小

转载 作者:太空宇宙 更新时间:2023-11-04 12:14:53 25 4
gpt4 key购买 nike

我正在尝试在通知的大图标中设置一个可绘制对象,但是发生了奇怪的行为,该可绘制对象由于某种原因而变小,这是此图像中的第一个通知:

enter image description here

这是可绘制的:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape android:shape="rectangle" >
<solid android:color="@color/subject7"/>
<corners android:radius="30dp"/>
<padding
android:bottom="7dp"
android:left="7dp"
android:top="7dp"
android:right="7dp"/>
</shape>
</item>
<item android:drawable="@drawable/calendar_clock_colored_clicked" />

这就是我设置largeIcon的方式:

notification = new NotificationCompat.Builder(context);
notification.setLargeIcon(drawableToBitmap(ResourcesCompat.getDrawable(context.getResources(), drawableID, null)));

...

public Bitmap drawableToBitmap (Drawable drawable) {

if (drawable instanceof BitmapDrawable) {
return ((BitmapDrawable)drawable).getBitmap();
}

int width = drawable.getIntrinsicWidth();
width = width > 0 ? width : 1;
int height = drawable.getIntrinsicHeight();
height = height > 0 ? height : 1;

Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
drawable.draw(canvas);

return bitmap;
}

有人遇到过这种情况吗?

编辑:这是在BroadcastReceiver中,每60秒调用自身来刷新通知,大图标第一次正确显示时,它只会在第一次后显示较小。

最佳答案

以防有人偶然发现这个问题。

使用实际的 PNG 制作位图,并在其中添加适当的填充,如下所示:

private Bitmap getBitmap(int color) {
Drawable drawable = ResourcesCompat.getDrawable(context.getResources(), R.drawable.notification_class_icon, null);
Canvas canvas = new Canvas();
Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
canvas.setBitmap(bitmap);

//set round background on lolipop+ and square before
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Paint p = new Paint();
p.setAntiAlias(true);
p.setColor(ContextCompat.getColor(context, color));
canvas.drawCircle(canvas.getHeight()/2, canvas.getHeight()/2, canvas.getHeight()/2, p);
}
else {
canvas.drawColor(ContextCompat.getColor(context, color));
}
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
drawable.draw(canvas);

return bitmap;
}

这是 R.drawable.notification_class_icon 的外观:

enter image description here(黑色应该是透明的)。

确保为每个维度都制作一个。

然后只需像这样设置通知图标并传递背景颜色:

notification.setLargeIcon(getBitmap(R.color.colorPrimary));

关于java - 通知大图标看起来很小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39521130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com