2
我使用UIL加载位图。它工作正常。但在使用小部件时遇到问题。通用图像加载器:ImageScaleType被忽略
我与定制NonViewAware
加载它:
private static class WidgetImageAware extends NonViewAware
{
protected final int mId;
public WidgetImageAware(int imageSize, int id)
{
super(new ImageSize(imageSize, imageSize), ViewScaleType.CROP);
mId = id;
}
@Override
public int getId()
{
return mId;
}
}
要设置缩放我在DisplayImageOptions
使用imageScaleType(ImageScaleType.EXACTLY)
。
调用后:
imageLoader.displayImage(someUri, new WidgetImageAware(480, id), displayImageOptions, new SimpleImageLoadingListener()
{
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage)
{
height = loadedImage.getHeight() // height == 950 !!
width = loadedImage.getWidth() // width == 950 !!
}
});
所以加载的位图的大小比在感知(小480x480)要求更大(950x950)。我需要加载大小正确为480x480的位图。否则,小部件的更新会抛出:
java.lang.IllegalArgumentException: RemoteViews for widget update exceeds maximum bitmap memory usage (used: 3632836, max: 2304000) The total memory cannot exceed that required to fill the device's screen once.
也许这个答案可以帮助你 - http://stackoverflow.com/a/15744035/2308720 – Oleksandr
不幸的是没有。所有尺寸均按要求设置:getWidth和getHeight返回480,ImageScaleType设置为EXACTLY。 – Bhiefer