【问题标题】:Using UniversalImageLoader with widget's RemoteViewsFactory将 UniversalImageLoader 与小部件的 RemoteViewsFactory 一起使用
【发布时间】:2013-02-16 15:46:19
【问题描述】:

我正在使用 RemoteViewsFactory 在小部件中填充列表视图。

小部件包含一个图像。在远程视图上加载位图和 setImageView() 的最佳方法是什么?

非常感谢。

【问题讨论】:

  • 嗨诺斯特拉,谢谢。我确实先在那里看了。尽管它有一个使用 Widget Provider 填充 imageview 的好例子。我不相信在使用 RemoteViewsFactory 动态填充列表视图(在小部件中)时,我可以完全一样地使用此方法。至少从我有限的理解小部件来看。
  • 我相信我可能需要的是一种从 ImageLoader 同步获取位图的方法。不确定这是否可能?
  • UIL 不提供同步获取图像的方法,但您总能找到解决方法。我会把它作为答案发布。

标签: android-widget android-listview universal-image-loader


【解决方案1】:

同步加载图片的方式(适用于'loadImage(...)'和displayImage(...)):

final Object lock = new Object();
boolean loaded = false;
ImageSize targetImageSize = new ImageSize(70, 70);
ImageLoader.getInstance().loadImage(imageUri, targetImageSize, options, new SimpleImageLoadingListener() {
    @Override
    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
        loaded = true;
        // Do whatever you want with loadedImage

        synchronize(lock) {
            lock.notifyAll();
        }
    }
});
if (!loaded) {
    synchronize(lock) {
        lock.wait();
    }
}

【讨论】:

  • 感谢 NOSTRA,因为我发布了这个问题,所以我在我的小部件中更改了我的设计,所以我不使用列表视图。虽然,我还没有尝试过,但我会将其标记为答案,因为这应该允许您在 remoteviewsfactory 中填充图像
  • Nostra,这种方法不起作用 - 它执行 lock.wait() 行,并且似乎下载了图像,但没有执行 ImageLoadingListener 的回调(onLoadingStarted 除外)。因此 notify 永远不会被调用,并且该方法永远不会返回。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-03
  • 2014-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-06
相关资源
最近更新 更多