Android中把assets目錄下所有圖片轉換成bitmap存入list集合
阿新 • • 發佈:2019-02-08
InputStream open(String fileName);//以順序讀取模式開啟檔案,預設模式為ACCESS_STREAMING InputStream open(String fileName, int accessMode);//以指定模式開啟檔案。讀取模式有以下幾種: //ACCESS_UNKNOWN : 未指定具體的讀取模式 //ACCESS_RANDOM : 隨機讀取 //ACCESS_STREAMING : 順序讀取 //ACCESS_BUFFER : 快取讀取
imageView = (ImageView) findViewById(R.id.iv);
AssetManager manager = getResources().getAssets();
List<Map<String, Object>> catelist = new ArrayList<Map<String,Object>>();
String[] list_image = null; //圖片的檔名
try {
//之前沒有寫註釋現在補上 Assetmanager.list(String path)
//資料夾,這裡bannerjpge 是一個資料夾 是 asstes的子目錄
//如果我們要直接獲取 assets目錄下的所有檔案和資料夾怎麼辦?
//我們可以 直接傳"" 也就是 manager.list(""); 空字串
// 就可以獲取 assets目錄下的所有資料夾和檔案的名字了。
//所有資料夾和檔案的名字。
list_image = manager.list("bannerjpeg");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for (int i = 0;i<list_image.length;i++) {
InputStream open = null;
try {
String imagepath = "bannerjpeg/"+list_image[i]; //迴圈拼出每個圖片的相對路徑
open = manager.open(imagepath); //得到輸出流
Bitmap bitmap = BitmapFactory.decodeStream(open); //得到每個圖片
Map<String, Object> map = new TreeMap<String, Object>(); //儲存圖片路徑和轉換成的 bitmap
map.put(""+i, bitmap);
catelist.add(map); //list集合
// catelist.add(object)
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(open!=null) {
try {
open.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
}
bitmaps = new ArrayList<Bitmap>();
for(int i = 0;i<catelist.size();i++) {
Bitmap bitmap = (Bitmap) catelist.get(i).get(""+i);
bitmaps.add(bitmap);
}
imageView.setImageBitmap(bitmaps.get(3));
}
最後要注意: 如果我們不在 assets目錄下建立一個子目錄的話 assets目錄下 會有隱藏檔案 (其實我只是放了 4張圖片 )如下: