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(…)是我的解决方案。谢谢!