Android Studio訪問資源系統的方法總結

2021-10-06 18:14:26 字數 2982 閱讀 7554

android的資源檔案可以存放在如下的兩個地方:

①可以通過r資源清單類訪問的資源,位於/res/目錄下,android sdk會處理該目錄下的資源,在r類清單檔案中,為該目錄下的資源生成乙個索引項;

在該目錄下存放著大量常用資源:

/res/animator/  :存放定義屬性動畫的xml檔案資源。

/res/anim/        :存放定義補間動畫的xml檔案資源。

/res/color/        :存放定義不同狀態下顏色列表的xml檔案資源 。

/res/drawable/  :存放定義各種位**件的xml檔案資源,也可以是編譯成的各種物件。

/res/layout/       :存放定義使用者介面布局的xml檔案資源 。

/res/menu/        :存放為應用程式定義的各種選單資源的xml檔案。

實際上可以通過呼叫resources物件的openrawresources(int id)方法來獲取該資源的二進位制輸入流。也可以將這些原生資源放在/assets/目錄下,然後通過assetmanager來訪問。

/res/values/    :存放各種簡單的xml檔案(字串值、整數值、顏色值、陣列等)。

/res/xml/       :存放任意原生的xml檔案資源,可以通過resources.getxml( )訪問。

②無法通過r資源清單類訪問的原生資源,位於/assets/目錄下,該目錄下的資源是更徹底的原始資源,android應用會使用assetmanager來管理該目錄下的原始資源。

為了通過資源清單項來獲取實際資源,可以借助於android提供的resources類。可以把resources類理解為「android資源的訪問總管家」,resources類提供了大量的方法來根據資源清單id獲取實際資源。

resources類主要提供了如下兩類方法:

(1)get***(int id):根據資源清單id來獲取實際資源;

(2)getassets:獲取訪問/assets/目錄下資源的assetsmanager資源管理器物件;

注意:resources由context呼叫getresources( )方法來獲取的。

1.獲取螢幕方向int型別:1:portrait,2:landscape

context.getresources().getconfiguration().orientation;
2、把資源檔案放到應用程式的/res/raw下,以openrawresource方法來獲取該資源的二進位制輸入流(不帶字尾的資源檔名)開啟這個檔案:

//(資源檔名為index.html, 不需要帶字尾.html)    

inputstream fs =this.getresources().openrawresource(r.raw.index);

inputstreamreader read = new inputstreamreader (fs,"utf-8");    

bufferedreader in = new bufferedreader(read);

3、讀取res/drawable目錄下的png或者bmp

以資料流的方式讀取資源:    

//得到resources物件    

resources resource = this.getcontext().getresources();  

inputstream is = resource.openrawresource(r.drawable.mm_image);

bitmapdrawable bmpdraw = new bitmapdrawable(is);    

bitmap bmp = bmpdraw.getbitmap();

如果需要利用解碼器,如下使用:

inputstream is = getresources().openrawresource(r.drawable.icon);    

bitmap mbitmap = bitmapfactory.decodestream(is);    

paint mpaint = new paint();    

canvas.drawbitmap(mbitmap, 40, 40, mpaint);

//獲取螢幕密度

float density = getresources().getdisplaymetrics().density;

4、getdimension、getdimensionpixeloffset和getdimensionpixelsize區別:

getdimension和getdimensionpixeloffset的功能類似,都是獲取某個dimen的值,但是如果單位是dp或sp,則需要將其乘以density,如果是px,則不用乘density。並且getdimension返回float,getdimensionpixeloffset返回int。而getdimensionpixelsize則不管寫的是dp還是sp還是px,都會乘以denstiy。

呼叫:context.getresources().getdimensionpixelsize();

5、context.getresources().getcolor(r.color.colorid);//獲取顏色資源

6、context.getresources().getstring(r.string.stringid);//獲取字串資源

7、獲取字串陣列:string roles = context.getresources().getstringarray(r.array.array_role_values);  

檔案路徑是:\values\array.xml:

3415

1125247

142289

Android studio訪問MySQL資料庫

對mysql進行遠端或本地登入授權 grant all on to root identified by password with grant option flush privileges root 代表支援使用者root進行遠端連線,而如果只是需要本地連線,將 改為 localhost pas...

Android Studio主題設定

android studio發布也好多天了。剛好本人目前的專案需要android平板和pc區域網連線操作。就開始使用android studio了。不過預設的介面實在看不過眼,下面我們來看看android studio的主題吧。我們先選擇nimbus試試,這個名字很熟悉吧!整個介面煥然一新了吧。當然...

Android Studio編碼問題

不同於eclipse,選中專案右擊即會出現 properties 選項,可以設定專案檔案的預設編碼,可以根據自己的需要設定為utf 8 gb2312等編碼。但android studio的專案設定邏輯與eclipse有很大的區別,執行的操作為file setting file encodings然後...