2018/10/26

[Android] Set ImageView Resource

在Android裡面的ImageView物件上放圖片來源,除了直接在xml設定以外,程式碼有兩種方法可以用。
一種是抓手機內的資料夾讀取圖檔,另一種是直接抓Android專案中的drawable資料夾。
首先先在xml加入一個ImageView物件,接著在AndroidManifest.xml加入讀取權限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

1. 讀取手機資料夾圖檔:
在手機檔案裡面建立一個myDoc資料夾,放一張image.png圖片。
String filepath = "/myDoc/"; // get doc in device path
String filename = "image.png"; // with format .png
File imgFile = new  File(Environment.getExternalStorageDirectory() + filepath + filename);
if(imgFile.exists()){
    ivImage.setImageURI(Uri.fromFile(imgFile));
}else{
    Toast.makeText(this, "can't find" + filepath + filename, Toast.LENGTH_LONG).show();
}
這個方法讀取圖片的速度會慢一點點,但是可以減少APP跟專案檔的大小。

2. 讀取專案檔中的drawable資料夾:
將image.png圖檔放到Android Studio專案裡面的drawable資料夾裡面。
String filepath = "@drawable/"; // get drawable path
String filename = "image"; // without format
int imageResource = getResources().getIdentifier(filepath + filename, null, getPackageName());
if(imageResource != 0) {
    ivImage.setImageResource(imageResource);
}else{
    Toast.makeText(this, "can't find" + filepath + filename, Toast.LENGTH_LONG).show();
}
這個方法把圖片檔都包到專案檔跟APP裡面,檔案會相對比較大,但讀取速度比較快。

比較要注意的是filename檔名命名時,注意有無需要包含格式。
兩種方法都各有優缺點,可以依照程式架構來決定用哪一種寫比較好。
(END)

沒有留言:

張貼留言