Android 使用RemoteView设置位图不起作用

Android 使用RemoteView设置位图不起作用,android,android-widget,Android,Android Widget,我正在写一个小部件,我需要下载并在布局上设置一个位图。我尝试过的一切似乎都不起作用 我已经创建了一个测试位图,现在可以在视图上设置,[更新]这很有效 Bitmap.Config config = Bitmap.Config.ARGB_8888; Bitmap bitmap = Bitmap.createBitmap(imageActiveWidth, imageHeight, config); Canvas canvas = new Canvas(bitmap); // Load

我正在写一个小部件,我需要下载并在布局上设置一个位图。我尝试过的一切似乎都不起作用

我已经创建了一个测试位图,现在可以在视图上设置,[更新]这很有效

  Bitmap.Config config = Bitmap.Config.ARGB_8888;
  Bitmap bitmap = Bitmap.createBitmap(imageActiveWidth, imageHeight, config); 
  Canvas canvas =  new Canvas(bitmap); // Load the Bitmap to the Canvas
  Paint paint = new Paint();
  paint.setColor(0xFFFFCCFF);
  canvas.drawRect(0, 0, imageActiveWidth, imageHeight, paint); 
  views.setImageViewBitmap(resId, bitmap);
使用资源文件确实有效:

  Bitmap placeholderBitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.placeholder_medium);
  views.setImageViewBitmap(imageSlotId, placeholderBitmap);
但是,使用下载的位图似乎不起作用。 (异步任务下载位图后,我有一个方法setBitmap,它是一行:

 views.setImageViewBitmap(resId, proxy);
结果-屏幕为白色,没有位图


我真的很困惑如何让它工作,因为我需要能够下载位图并设置它们。

找到了一个解决方案。我认为它与此bug有关:

通过将setBitmap方法更改为以下方法解决:

private void setBitmap(RemoteViews views, int resId, Bitmap bitmap){
    Bitmap proxy = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas c = new Canvas(proxy);
    c.drawBitmap(bitmap, new Matrix(), null);
    views.setImageViewBitmap(resId, proxy);
}
我需要打电话:
AppWidgetManager.getInstance(上下文).UpdateAppWidgetId(appWidgetId,视图);

设置位图后。


由于某种原因,当我回到它时,它不起作用。我的视图是AdapterViewLipper,因此我使用上述方法调用
widgetManager.notifyAppWidgetViewDataChanged(appWidgetId,R.id.content)
导致位图渲染。

好吧,这是一个愚蠢的错误-我的测试没有工作,因为没有考虑绘画中的alpha!应该是:
paint p=new paint();p.setColor(0xFFFF0000);
在加载图像后调用updateAppWidget(…)是我的解决方案。谢谢!