2013-01-11 82 views
0

我正在使用通用圖像視圖將圖像加載到我的應用程序中。獲取可繪製的imageView的大小以用作佔位符

這是我實現

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); 
    } 

}

方法中的邏輯是這樣的:我有一些在可繪的圖像的。首先,我使用本地drawable作爲佔位符(showStubImage)。 Utilities.getDrawableResource()重新繪製drawable。然後,從服務器下載的圖像將在完成下載後顯示。

我的問題

用作佔位臨時圖像比從服務器下載圖像越大。所以起初圖像很大,然後當新圖像完成下載時就會縮小。我怎樣才能讓它們的imageView尺寸完全相同?

我試圖避免手動調整大小的代碼,使他們相同的大小。謝謝

PS:Utilities.getDrawableResource()使用getResource().getIdentifier()得到正確的drawable。

回答

1

有幾種不同的方法取決於您想要達到的目標以及預先獲得的信息量。

一種方法是將您的imageview設置爲XML上的確切尺寸(例如width:match_parentheight:144dp),並讓服務器和您的可繪製比例放在裏面。

如果您在下載之前訪問圖像服務器的大小,可以設置的ImageView的LayoutParams那些精確值,讓繪製大小調整到(和服務器將只伏貼)

我m認爲你可以使用XML形狀drawables和/或9patch來使它更好地伸縮,但是你仍然需要上述兩種方法之一。

+0

但是如何支持多種屏幕尺寸? –

+1

您將固定尺寸放置在值文件夾內的dimens.xml中。根據需要,您可以在值 - 大或值 - sw600dp上創建其他dimens.xml – Budius

相關問題