【发布时间】:2012-01-10 03:54:07
【问题描述】:
我是 android 小部件的新手,目前我正在开发使用更多图像的小部件,它运行完美但有时会抛出错误 Failed Binder Transaction,
我知道问题出在远程视图上,谁能告诉我如何在 android 小部件中处理远程视图?
【问题讨论】:
我是 android 小部件的新手,目前我正在开发使用更多图像的小部件,它运行完美但有时会抛出错误 Failed Binder Transaction,
我知道问题出在远程视图上,谁能告诉我如何在 android 小部件中处理远程视图?
【问题讨论】:
这是因为对 RemoteViews 的所有更改都是序列化的(例如 setInt 和 setImageViewBitmap )。位图也被序列化为一个内部包。不幸的是,这个捆绑包的大小限制非常小。
确保缩小位图。请参考以下代码。
public static Bitmap scaleDownBitmap(Bitmap photo, int newHeight, Context context) {
final float densityMultiplier = context.getResources().getDisplayMetrics().density;
int h= (int) (newHeight*densityMultiplier);
int w= (int) (h * photo.getWidth()/((double) photo.getHeight()));
photo=Bitmap.createScaledBitmap(photo, w, h, true);
return photo;
}
这个 newHeight 应该很小(它应该在屏幕上占据的每个正方形约为 100)并将它用于您的小部件,您的问题将得到解决:)
【讨论】: