ser*_*kye 3 android android-widget
我正在编写一个小部件,我需要在布局上下载并设置一个位图.我试过的一切似乎都不起作用.
我现在创建了一个测试位图来设置视图,[更新]这个工作.
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);
Run Code Online (Sandbox Code Playgroud)
使用资源文件确实有效:
Bitmap placeholderBitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.placeholder_medium);
views.setImageViewBitmap(imageSlotId, placeholderBitmap);
Run Code Online (Sandbox Code Playgroud)
但是,使用下载的位图似乎不起作用.(在异步任务下载了位图之后,我有一个方法setBitmap,它是一行:
views.setImageViewBitmap(resId, proxy);
Run Code Online (Sandbox Code Playgroud)
结果 - 屏幕只是白色,没有位图
我真的很难理解如何让它工作,因为我需要能够下载位图并设置它们.
找到了解决方案.我认为它与此错误有关: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);
}
Run Code Online (Sandbox Code Playgroud)
我需要打电话:
AppWidgetManager.getInstance(context).updateAppWidget(appWidgetId, views);
在位图设置之后.
出于某种原因,当我回到它时,这是行不通的.我的视图是一个AdapterViewFlipper,所以我使用上面的方法调用widgetManager.notifyAppWidgetViewDataChanged(appWidgetId, R.id.content);导致位图呈现.
| 归档时间: |
|
| 查看次数: |
6302 次 |
| 最近记录: |