2011-10-17 27 views
2

根據當然的情況,我通常會爲我的應用程序支持的每個密度繪製一個drawable,並且在使用某個drawable的id引用時使用正確的可繪製密度。是否有可能從Android中的特定密度訪問drawable?

但是我正在尋找從特定密度(例如ldpi)訪問drawable,無論設備上運行的密度如何。但是我想要一個特定的情況,而不是在任何地方,這將打敗爲每個密度繪製多個drawable的目的。

這可能嗎?

回答

0

我不知道這是可能的或不是,但作爲一個簡單的邏輯。

您只需製作一張副本,並將其命名爲mypic2並將其保存在ldpi文件夾中。

現在從您的xml或活動給在您的具體情況新的mypic2的參考。

+2

我需要的drawable已經存在,所以我創建了一個副本並增加了我的應用程序的大小?這正是我想要避免的... –

+0

你好我知道你試圖儘量減少內存使用..但需要做一些更多的學習,.. ..現在我高壓沒有其他解決方案 – MKJParekh

+0

我想這是唯一可能的解決方案,所以我'標記爲接受。如果其他人想出更好的解決方案,我會改變它。 –

-1

如果它是一個特定的drawable,那麼只需將它放在ldpi文件夾中即可。如果在任何更合適的密度文件夾中找不到它,運行時將從那裏選取它。

+0

不,它可以從一組預定義的任何繪製(但它的很多可繪製的)和我有一個可用的每個密度可用。我只需要訪問在特定情況下可繪製的特定密度。 –

1

這是我用來從另一個應用程序加載華電國際繪製(僅適用於Android 4.0的工程)

PackageInfo pi = packages.get(i); 

ai = new AppListAdapter.AppItem(); 
try { 
    Context otherAppCtx = getApplicationContext().createPackageContext(pi.applicationInfo.packageName, CONTEXT_IGNORE_SECURITY); 

    ai.Icon = otherAppCtx.getResources().getDrawableForDensity(pi.applicationInfo.icon, DisplayMetrics.DENSITY_HIGH); 

} catch (Exception e) { 
    ai.Icon = pi.applicationInfo.loadIcon(getPackageManager()); 

} 
相關問題