2018/10/26

[Android] Set ImageView Resource

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

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

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

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

沒有留言:

張貼留言