2013-09-24 38 views
15

Tôi có một ứng dụng Android trong đó tôi có một vài hình ảnh trong thư mục nội dung. Bây giờ tôi muốn tạo một mảng các hình ảnh đó. Bây giờ vấn đề của tôi là: - khi hình ảnh của chúng tôi là trong drawable chúng ta có thể làm cho một mảng nhưTải hình ảnh từ thư mục tài sản

int x[] = { 
    R.drawable.ss, 
    R.drawable.aa, R.drawable.sk, 
    R.drawable.xx 
}; 

và vân vân. làm thế nào tôi có thể làm cho một loạt các hình ảnh giống như trên khi hình ảnh của tôi là trong thư mục tài sản. Tôi muốn tạo một mảng ở cấp lớp.

+0

bạn có thể làm điều đó với một mảng String với tên file – JRowan

+0

tìm kiếm sử dụng http://stackoverflow.com/questions/7645268/how-to- load-a-image-from-asset – Lebedevsd

Trả lời

25

Bạn phải đọc hình ảnh bằng hình ảnh như dưới đây:

Bạn có thể sử dụng AssetManager để lấy InputStream sử dụng phương pháp open() của nó và sau đó sử dụng phương pháp decodeStream() của BitmapFactory để có được những Bitmap.

private Bitmap getBitmapFromAsset(String strName) 
    { 
     AssetManager assetManager = getAssets(); 
     InputStream istr = null; 
     try { 
      istr = assetManager.open(strName); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     Bitmap bitmap = BitmapFactory.decodeStream(istr); 
     return bitmap; 
    } 
6

Nếu hình ảnh của bạn được lưu trữ trong thư mục hình ảnh trong thư mục tài sản sau đó bạn có thể nhận được danh sách các hình ảnh như cách

private List<String> getImage(Context context) throws IOException { 
     AssetManager assetManager = context.getAssets(); 
     String[] files = assetManager.list("image"); 
     List<String> it = Arrays.asList(files); 
     return it; 
} 
+0

Tôi muốn khai báo ở cấp lớp. Điều này có thể – suneel

+0

sau đó bạn cần để có được bối cảnh đầu tiên sau đó sau khi bạn có thể nhận được tài sản –

+0

bạn có thể giải thích nhiều hơn với ví dụ – suneel

0

Bạn có ý nghĩa sai về drawables và Tài sản. Bạn có thể tạo mảng od "drawables", bởi vì tất cả các drawables có id riêng trong R (như R.dawable.ss), vì vậy bạn có thể sử dụng số nguyên được chỉ định để có thể drawable nếu bạn có ngữ cảnh thích hợp.

Cách quản lý các tệp khác như hình ảnh là thử nghiệm. Nếu bạn muốn quản lý hình ảnh bằng id của họ, bạn phải thêm hình ảnh này làm drawables. Nói cách khác, các file assests phải được quản lý giống như một file đơn giản trong dir.

Bạn phải nhận tệp từ nội dung AssetManager am=this.getAssets(); và sau đó chuẩn bị tệp để đọc/ghi. Nếu bạn có hình ảnh bạn có thể làm một cái gì đó như thế này:

try {  
    Bitmap bmp=BitmapFactory.decodeStream(am.open("009.gif")); 
    imageView.setImageBitmap(bmp); 

} catch (IOException e) { 
    e.printStackTrace(); 
} 
4
// load image from asset folder 
     try { 
      // get input stream 
      InputStream ims = getAssets().open("avatar.jpg"); 
      // load image as Drawable 
      Drawable d = Drawable.createFromStream(ims, null); 
      // set image to ImageView 
      mImage.setImageDrawable(d); 
     } 
     catch(IOException ex) { 
      return; 
     } 

    or you can create drawable array 
    Drawable d []={d}; 
Các vấn đề liên quan