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

ただし、ダウンロードしたビットマップの使用は機能していないようです。(非同期タスクがビットマップをダウンロードした後、1行のメソッド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 に答える