【发布时间】:2015-03-21 03:47:14
【问题描述】:
我正在尝试将温度设置为填充通知图标的整个正方形。我已经尝试了各种设置和代码调整,这是我能得到的最好的。我首先在 Android Assets Studio 网站上创建了一些通知图标,并在其相应的可绘制文件夹中将它们称为 ic_notification。我创建的 PNG 是一个空白 PNG,其中 3.4 位于其中,如图所示,它是图片中的黑框。
我已经在一张桌子(10.1 英寸大小)和三星 Galaxy S 之类的小手机上运行了它,它的大小与下图相同。我想填满整个盒子,而不仅仅是黑盒子,也覆盖了浅蓝色部分。有人可以解释为什么它没有填满整个屏幕,或者如何让它填满整个屏幕?
我使用的代码如下,parts[4] 是从数组中获取的温度,degrees 是华氏或摄氏符号,具体取决于用户选择的内容在设置中。在创建可绘制对象后构建通知 .setLargeIcon(drawableToBitmap(iconDrawable)) 时设置图标。
BitmapDrawable iconDrawable = writeOnDrawable(R.drawable.ic_notification, parts[4] + degrees);
public BitmapDrawable writeOnDrawable(int drawableId, String text) {
Bitmap bm = BitmapFactory.decodeResource(mContext.getResources(),
drawableId).copy(Bitmap.Config.ARGB_8888, true);
Paint paint = new Paint();
paint.setStyle(Style.FILL);
paint.setColor(Color.WHITE);
paint.setTextSize(bm.getWidth() / 3);
paint.setTextAlign(Align.CENTER);
Canvas canvas = new Canvas(bm);
//Log.e("log_etag", "Drawable Text " + text);
//Log.e("log_etag", "getWidth bitMap " + bm.getWidth());
//Log.e("log_etag", "Text Width " + text.length());
Rect bounds = new Rect();
float x = bm.getHeight() / 2, y = bm.getWidth() / 2;
// get text lenght
paint.getTextBounds(text, 0, text.length(), bounds);
// canvas.drawLine(0, y, canvas.getWidth(), y, paint); // Included
// to show vertical alignment
// canvas.drawLine(x, 0, x, canvas.getHeight(), paint); // Included
// to show horizontal alignment
// draw text
canvas.drawText(text, x, y + bounds.height() * 0.5f, paint);
return new BitmapDrawable(mContext.getResources(), bm);
}
我使用以下转换为位图
public Bitmap drawableToBitmap(Drawable drawable) {
if (drawable instanceof BitmapDrawable) {
return ((BitmapDrawable) drawable).getBitmap();
}
Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(),
drawable.getIntrinsicHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
drawable.draw(canvas);
return bitmap;
}
【问题讨论】:
-
前段时间我遇到了Android中的小图标和大图标被弄乱的问题。我不确定你是否也是这种情况,但你可以考虑这个帖子:stackoverflow.com/a/19375412/1108032 请注意,PS 中提到了图标搞砸了,不是帖子的主题
-
很有趣,但这似乎对我的事业没有帮助。我想我必须摆弄可绘制设置。
标签: android android-notifications