2013-09-24 14 views
15

Mam aplikację na Androida, w której mam kilka zdjęć w folderze zasobów. Teraz chcę stworzyć szereg tych obrazów. Teraz mój problem jest: - kiedy nasze obrazy są w odkształcalne możemy zrobić tablicę jakZaładuj obrazy z folderu zasobów

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

i tak dalej. jak mogę utworzyć tablicę obrazów tak jak powyżej, gdy moje obrazy znajdują się w folderze zasobów. Chcę utworzyć tablicę na poziomie klasy.

+0

można to zrobić za pomocą tablicy ciągów z nazwami – JRowan

+0

użycie wyszukiwania http://stackoverflow.com/questions/7645268/how-to- load-a-image-from-assets – Lebedevsd

Odpowiedz

25

Trzeba czytać obraz obrazek jak poniżej:

Można użyć assetManager uzyskać InputStream używając jego metody open(), a następnie użyć decodeStream() metoda BitmapFactory dostać bitmapy.

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

Jeśli obrazy są zapisywane w folderze obrazu w katalogu assets następnie można uzyskać listę obrazu jako sposób

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

Chcę zadeklarować to na poziomie klasy. Czy jest to możliwe – suneel

+0

to musisz najpierw uzyskać kontekst, a następnie po tym, jak możesz uzyskać zasób –

+0

możesz wyjaśnić więcej na przykładzie – suneel

0

można mieć złego o sens i assests kanału alfa. Możesz utworzyć tablicę od "drawables", ponieważ wszystkie drawables mają własne identyfikatory w R (jak R.dawable.ss), więc możesz użyć określonej liczby całkowitej, aby uzyskać rysowalną, jeśli masz odpowiedni kontekst.

Inny sposób zarządzania plikami takimi jak obrazy jest niezagrożony. Jeśli chcesz zarządzać obrazami według ich numerów identyfikacyjnych, musisz dodać te obrazy do rysowania. W inny sposób pliki assests muszą być zarządzane jak proste pliki w katalogu.

Musisz pobrać pliki z zasobów AssetManager am=this.getAssets();, a następnie przygotować plik do odczytu/zapisu. Jeśli masz zdjęcia można zrobić coś takiego:

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}; 
Powiązane problemy