我有一个带有列表视图屏幕的应用程序。在此列表视图中,我正在每行中显示不同的应用程序,其图像和名称(使用arraylist)。连续点击某个应用程序后,它将启动该特定应用程序。现在,当有任何应用程序更新时,我想在应用程序图像上显示徽章。能做到吗?

我将图像存储为位图。有什么方法可以将徽章添加到位图(不是资源,而是从Web URL获取),或者以任何方式在带有arraylist的listview中显示徽章。

最佳答案

尝试这个。您可能需要根据图像尺寸修改尺寸选项。我将其用于128x128图像。

public static Bitmap getOverlayedImage(Resources res, Drawable img1, Drawable img2) {
  float den = res.getDisplayMetrics().density;
  int dip = (int) (80 * den + 0.5f);
  int sz = (int) (128 * den + 0.5f);

  Drawable[] layers = new Drawable[2];
  layers[0] = img1;
  layers[1] = img2;

  LayerDrawable layerDrawable = new LayerDrawable(layers);
  layerDrawable.setLayerInset(1, dip, dip, 0, 00);

  Bitmap b = Bitmap.createBitmap(sz, sz, Bitmap.Config.ARGB_8888);
  layerDrawable.setBounds(0, 0, sz, sz);
  layerDrawable.draw(new Canvas(b));

  return b;
}


这样称呼它:

getOverlayedImage(getResources(), drawable1, drawable2);

10-07 19:41