是否有可能以編程方式更改資源配置限定符? 我的意思是,使一些hdpi設備的系統從xhdpi文件夾中取代hdpi資源。以編程方式Android更改資源限定符
回答
我不確定你是否可以。不要誤會我的意思:我個人也想知道這個答案。你到底想做什麼?
如果您要以編程方式執行任何操作,最好將資產放在可繪製的直線上,然後應用縮放比例。你可以得到事半功倍的密度很容易地
感謝您的回覆。 在我的項目中,我有ldpi,mdpi,hdpi和xhdpi圖像資源。對於Kindle Fire(1024 x 600 - 169 dpi),android系統從mdpi文件夾獲取資源,應用程序看起來非常糟糕。我想讓android從hdpi文件夾中獲取資源。 – Yomodo
的Kindle擁有超大屏幕,但是與中密度
它需要佈局從RES /佈局大/ your.xml
但是從清晰度圖像/繪製/ MDPI所以只需創建一個名爲RES /繪製/ MDPI大型
希望這會爲你工作文件夾,但圖像一定要按照Kindle的分辨率
在我的項目中,我有ldpi,mdpi,hdpi和xhdpi 圖片資源。對於Kindle Fire(1024 x 600 - 169 dpi),android系統 需要mdpi文件夾中的資源,應用程序看起來非常糟糕。我想讓android從hdpi文件夾中獲取資源。
與您的意見相關我通常只提供資源只用於hdpi屏幕和所有其他密度工作正常。在我通常瞄準的2.1+或2.2+設備上進行測試!
我知道沒有記錄的風險,所以它不會工作,雖然它!這樣我就可以避免我的最終apk中的一些KB。
但我不建議使用xhdpi而不是hdpi,因爲xhdpi只適用於3+或其他設備。
只是一個單一的設備上測試不同的密度可以通過改變AVD:
am display-density 480
更多信息,請參閱的Android文檔:http://developer.android.com/tools/help/adb.html#shellcommands
試試這個代碼。希望能幫助到你。
import android.util.DisplayMetrics;
private int result = 0; //Activity member
public void determineDeviceResolution {
switch(metrics.densityDpi)
{
case DisplayMetrics.DENSITY_LOW:
{
result = DisplayMetrics.DENSITY_LOW;
break;
}
case DisplayMetrics.DENSITY_MEDIUM:
{
result = DisplayMetrics.DENSITY_MEDIUM;
break;
}
case DisplayMetrics.DENSITY_HIGH:
{
result = DisplayMetrics.DENSITY_HIGH;
break;
}
default:
break;
}
}
private Drawable getDrawable(String icon) {
//Pass file name of the resource file
//while invoking this method for e.g. play_icon.png
//You can specify the folder from which resource
//needs to be picked for e.g. drawable_hd,drawable_xhdpi etc..
Drawable drawable = null;
if(result == DisplayMetrics.DENSITY_HIGH)
{
drawable=create_drawable("/drawable_hd/" + icon);
}
else
{
drawable=create_drawable("/drawable/" + icon);
}
return drawable;
}
Drawable create_drawable(String absolute_filepath)
{
InputStream in = null;
Bitmap bMap = null;
BufferedInputStream buf = null;
Drawable d = null;
try
{
in = getClass().getResourceAsStream(absolute_filepath);
buf = new BufferedInputStream(in);
bMap = BitmapFactory.decodeStream(buf);
if(in == null || buf == null || bMap== null)
{
return null;
}
if (in != null)
{
in.close();
}
if (buf != null)
{
buf.close();
}
}
catch (Exception e)
{
e.printStackTrace();
}
d = new BitmapDrawable(bMap);
return d;
}
最後,您可以通過繪製的UI元素的setBackgroundDrawable()方法。
您還可以自定義設備寬度和其他屬性的資源。閱讀此:http://developer.android.com/guide/practices/screens_support.html
- 1. 以編程方式更改字符串資源在android
- 2. 以編程方式更改資源getString()
- 3. Android:更改字符串資源編程方式
- 4. Android更改顏色資源價值以編程方式
- 5. 如何以編程方式更改Android中的字符串資源xml值?
- 6. 以編程方式指定資源ID
- 7. 以編程方式定義StackPanel資源?
- 8. 以編程方式更改圖像源
- 9. 在兩個資源文件之間以編程方式更改
- 10. winapi如何以編程方式更改Windows資源語言
- 11. 以編程方式更改資源(int/strings/styles/etc)的值
- 12. 以編程方式更改Windows資源管理器的外觀?
- 13. Android Wear資源限定符
- 14. Android:以編程方式更改語言
- 15. Android以編程方式更改drawableRight
- 16. Android imagebutton以編程方式更改?
- 17. JSF以編程方式添加資源
- 18. C#以編程方式創建資源
- 19. 用編程方式更改語言/資源w/WPF
- 20. Android - 以編程方式更改字符串本地
- 21. android以編程方式重新加載佈局資源
- 22. Android:以編程方式遍歷資源ID
- 23. 以編程方式更新windows phone 7中的資源文件
- 24. 以編程方式讀取資源字符串
- 25. 如何以編程方式創建字符串資源
- 26. 使用字符串資源以編程方式更改Android應用內的語言?
- 27. 以編程方式更改自定義Android鍵盤的鍵盤
- 28. 以編程方式更改Android設備的輸入方法android
- 29. Android資源大小限定符
- 30. RTL支持Android和資源限定符
我要出去在這裏的肢體,並說「你不想要這個」。這是一個有趣的老野獸資源的選擇,尤其是當試圖支持前後的Android 3.1。 – OceanLife