怎么調用getresource方法
使用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);
}
第一個參數格式是:包名 + : +資源文件夾名 + / +資源名;是這種格式 然后其他的可以為null
(2)方式二
Resources resources = context.getResources();
intindentify= getResources().getIdentifier("icon", "drawable", "org.anddev.android.testproject");
第一個參數為ID名,第二個為資源屬性是ID或者是Drawable,第三個為包名。
如果找到了,返回資源Id,如果找不到,返回0 。
寫了一個方法:獲取資源ID,如果不存在返回0
static int getResourceId(Context context,String name,Stringtype,String packageName){
ResourcesthemeResources=null;
PackageManager pm=context.getPackageManager();
try {
themeResources=pm.getResourcesForApplication(packageName);
returnthemeResources.getIdentifier(name, type, packageName);
} catch(NameNotFoundException e) {
e.printStackTrace();
}
return0;
}
從數據庫里讀取圖片名稱,然后調用圖片。直接用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);
Android開發中,如何在靜態類中使用getResources()獲取圖片資源.
獲取resource需要context對象,所以你這個問題有如下幾個解決思路
1,使用Context作為參數,例如public
static
getResourcesStatic(Context
context,
int
resId)
2,使用Context作為成員變量,在構造函數中接受一個Context參數,并賦值給自己成員變量
這樣在此對象生命期內,都可以使用.
不過并不推薦這種做法,因為傳入的Context多數情況下是Activity,往往會附著很多資源,如背景圖片等,無法GC,導致過高的內存占用.可以用下面的改進方式:
3,使用WeakReference
保存context的弱引用
使用時要注意判斷ref.get()是否為null
android的getResources()報錯如何解決?
在AndroidStudio的Library工程目錄下build.gradle同級目錄添加文件"public-xml.gradle"。
在Library的build.gradle文件中添加如下內容:applyfrom:'public-xml.gradle' 。
在AndroidStudio的app主工程的build.gradle同級目錄下添加文件"public-xml.gradle"。 這個腳本與Library中腳本的唯一區別就是applicationVariants和libraryVariants。
在app的build.gradle文件中添加如下內容:applyfrom:'public-xml.gradle' 。
然后,重新rebuild工程即可(核實AndroidStudio生成的R文件與public.xml文件中ID一致)。
java的ClassLoader的getResources方法怎么使用
API文檔:
getResourcespublic Enumeration<URL> getResources(String name)
throws IOException
查找所有給定名稱的資源。資源是可以通過類代碼以與代碼基無關的方式訪問的某些數據(圖像、聲音、文本等)。
資源名稱是以 '/' 分隔的標識資源的路徑名稱。getResource(String) 的文檔中描述了搜索順序。
參數:
name - 資源名稱
返回:
資源的 URL 對象的枚舉。如果找不到資源,則該枚舉將為空。類加載器無權訪問的資源不在此枚舉中。
拋出:
IOException - 如果發生 I/O 錯誤
Android中的是getResource()方法返回什么?
返回的是Resources這個類對象,然后你可以通過它來加載res目錄(如下圖)下的資源,如加載圖片:getResources().getDrawable(R.drawable.cancel);加載字符串:getResources().getString(R.string.accept_info);
res目錄
android下怎么獲取res資源文件夾的路徑
android無法獲取res資源文件夾路徑,只能通過系統提供的封裝函數訪問。
資源文件夾有:
/res/drawable
,通過getresources()訪問
/res/values
,通過getresources()訪問
/res/layout,通過getresources()訪問
/res/xml,通過getresources()訪問
/res/raw,通過getresources()訪問
/asts,通過getasts()訪問