3

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

我现在创建了一个测试位图来设置视图,[更新]这工作。

  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);

结果 - 屏幕只是白色,没有位图

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

4

1 回答 1

6

找到了解决方案。我认为它与这个错误有关: http ://code.google.com/p/android/issues/detail?id=8489

通过 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(context).updateAppWidget(appWidgetId, views);
在设置位图之后。

出于某种原因,当我回到它时,这不起作用。我的视图是一个 AdapterViewFlipper,所以我使用了上述方法并调用了widgetManager.notifyAppWidgetViewDataChanged(appWidgetId, R.id.content);导致位图呈现的调用。

于 2013-01-15T14:41:30.813 回答