得到精确的imageView大小以用作占位符

时间:2013-01-11 11:47:35

标签: android drawable universal-image-loader

我正在使用通用图像视图将图像加载到我的应用程序中。

这是我实施的方法

public static void setBitmapToAImageviewUIL(final ImageView imageView, String uriPath, String imageName)
{
  if(imageName != null && !imageName.equals(""))
  {
     //We use the local image as a temporary placeholder
     DisplayImageOptions options = new DisplayImageOptions.Builder()
           .showStubImage(Utilities.getDrawableResource(imageName))
           .cacheOnDisc()
           .cacheInMemory()
           .imageScaleType(ImageScaleType.EXACTLY)
           .bitmapConfig(Bitmap.Config.ARGB_8888)
           .build();

     imageLoader.displayImage(uriPath, imageView, options);
  }

}

逻辑是这样的:我在drawables中有一些图像。首先,我使用局部drawable作为占位符(showStubImage)。 Utilities.getDrawableResource()重新绘制了drawable。然后,完成下载后,将显示从服务器下载的图像。

我的问题

用作占位符的临时图像大于从服务器下载的图像。因此,首先图像很大,然后当新图像完成下载时,它会缩小。如何使它们与imageView的大小完全相同?

我正在尝试避免手动调整大小代码以使它们具有相同的大小。感谢

PS:Utilities.getDrawableResource()使用getResource().getIdentifier()来获取正确的drawable。

1 个答案:

答案 0 :(得分:1)

根据您想要达到的目标以及您预先获得的信息,有几种不同的方法。

一种方法是将您的imageview设置为XML上的确切大小(例如width:match_parent height:144dp),并将服务器和您的可绘制比例放在其中。

如果您在下载之前可以访问图像服务器大小,则可以将imageView layoutparams设置为精确值,并将drawable调整为大小(并且服务器将完全适合)

我认为你可以使用XML形状drawables和/或9patch来使它更好地扩展,但你仍然需要上述两种方法中的一种。