使用getIdentifier()獲取資源Id
用getIdentifier()方法可以方便的獲各應用包下的指定資源ID。 主要有兩種方法: (1)方式一 Resources resources = context.getResources(); int indentify = resources.getIdentifier(org.loveandroid.androidtest:drawable/icon",null,null); if(indentify>0){ icon = resources.getDrawable(indentify); }
1. 第一個參數格式是:包名 + : + 資源文件夾名 + / +資源名;是這種格式 然后其他的可以為null
(2)方式二 Resources resources = context.getResources(); int indentify= getResources().getIdentifier("icon", "drawable", "org.anddev.android.testproject");
1. 第一個參數為ID名,第二個為資源屬性是ID或者是Drawable,第三個為包名。
(3)下面說下獲取資源中的其他資源:
1.要是想獲得string可以這樣寫:
getResources().getIdentifier("name", "string", packdgeName);
2.要是想獲得array中的數組,可以這樣寫:
getResources().getIdentifier("name", "array", packdgeName);
寫了這些其他我估計你就明白了。 如果找到了,返回資源Id,如果找不到,返回0 。 寫了一個方法:獲取資源ID,如果不存在返回0 static int getResourceId(Context context,String name,String type,String packageName){ Resources themeResources=null; PackageManager pm=context.getPackageManager(); try { themeResources=pm.getResourcesForApplication(packageName); return themeResources.getIdentifier(name, type, packageName); } catch (NameNotFoundException e) {
e.printStackTrace(); } return 0; } 從數據庫里讀取圖片名稱,然后調用圖片。直接用R.drawable.?無法調用。查了好多地方最后找到了個方法,分享給大家,希望有幫助。 主要由兩種方法,個人建議第二種。 1. 不把圖片放在res/drawable下,而是存放在src某個package中(如:com.drawable.resource),這種情況下的調用方法為: String path = "com/drawable/resource/imageName.png"; InputStream is = getClassLoader().getResourceAsStream(path); Drawable.createFromStream(is, "src");
2. 如果還是希望直接使用res/drawable中的圖片,就需要通過下面的方法了: 假設創建工程的時候,填寫的package名字為:com.test.image int resID = getResources().getIdentifier("imageName", "drawable", "com.test.image"); Drawable image = getResources().getDrawable(resID);
難度二:
就是在數據存儲的時候怎么樣使得界面中多有控件的值賦值到平台的xml中(因為公司的數據存儲要將數據先存到xml中,然后dataset.readxml()來將數據讀取,最后進行保存),這樣我怎么樣來獲得值呢,這就又是我的一個問題,想了好久想到的辦法就是在生成界面元素的時候將控件的id,code以id為鍵值存儲到hashmap中,再用到的時候可以去hashmap中去查找,這樣我的問題也就解決了。這是我這段時間做Android的感受,記錄點點滴滴,贏取我的最大的進度。因為一時沒時間,還有很多問題沒有整理,精彩內容在Android項目開發心得(二)敬請關注。