Eigene Ordnerstruktur erstellen

  • Antworten:5
Daniel online
  • Forum-Beiträge: 282

20.12.2011, 12:41:06 via Website

Hallo,

Ich arbeite zur Zeit an einem App für welches ich sehr viele Bilder verwalten muss (sicher über 100). Ist es möglich eigene Ordner zu erstellen und darauf wie gewohnt zuzugreifen?

Ich stelle mir das ungefähr so vor:

drawable/
/title
/test.png
/main
/button.png

am besten greif ich dann via R.drawable.title.test auf das Bild zu. Leider funktioniert das nicht.
Kennt jemand eine gute alternative?

Viele Grüße,
Daniel

Antworten
Markus B.
  • Forum-Beiträge: 636

20.12.2011, 12:58:02 via App

Hi, was spricht dagegen die Struktur im drawable Ordner anzulegen und dort dann nach Auflösungen zu ungeteilten ?

Gruß,
Markus

Antworten
Gelöschter Account
  • Forum-Beiträge: 24

20.12.2011, 13:19:42 via Website

Ich würde es so machen:

1drawable/title_test.png
2drawable/main_button.png
3drawable-ldpi/title_test.png
4drawable-ldpi/main_button.png

Gruß
Harald

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

20.12.2011, 13:23:18 via Website

eine ordnerstruktur ist nicht möglich.

ich glaube mit dem neusten adt kannst zwar ordner erstellen, sie werden aber bei der generierung der R datei übergangen.

von daher kann ich dir nur raten präfixe im dateinamen gut zu wählen.

swordiApps Blog - Website

Antworten
Felix
  • Forum-Beiträge: 259

20.12.2011, 23:05:26 via Website

Daniel online
Ich arbeite zur Zeit an einem App für welches ich sehr viele Bilder verwalten muss (sicher über 100). Ist es möglich eigene Ordner zu erstellen und darauf wie gewohnt zuzugreifen?

Kommt drauf an, was du unter "gewohnt" verstehst. Mit dateisystemähnlicher Funktionalität funktioniert das bei Ressourcen nicht, dafür kannst du aber Assets nehmen. Allerdings hab ich dazu in der Android-Doku kein Tutorial zum Thema Assets gefunden. Jedenfalls bekommt man in einer Activity über getAssets() einen AssetManager, mit dem man auf das Verzeichnis assets zugreifen kann. Die Bilder in eine ImageView zu bekommen hab ich noch nicht probiert, kann mir aber nach kurzer Recherche vorstellen, dass das über setImageDrawable() geht und man das Drawable mit createFromPath() öffnen kann.

Allerdings frage ich mich, ob es eine gescheite Idee ist, so viele Grafiken mit in die .apk packen zu lassen. Ich schreibe gerade eine Anwendung mit ca. 50 MB Bildmaterial (derzeit noch als drawable-Ressourcen), und das dauert schon immer eine ganze Weile, bis die apk ins Gerät übertragen wurde. Sowas bremst beim Entwicklungsprozess ganz schön, da man das ja recht häufig macht. Hier muss ich auch eine gescheite Lösung finden. Die Dinger einmalig zu laden, auf der SD Card abzulegen und von dort zu laden, wäre eine Möglichkeit, hat aber auch wieder Nachteile, wie zum Beispiel die benötigte Zugriffsberechtigung. Andererseits interessiert sowas den Endanwender weniger, der lädt nur einmalig die App (wenn man nicht zu häufig Maintenance-Releases rausbringen muss).


Felix

Antworten
Felix
  • Forum-Beiträge: 259

20.12.2011, 23:52:12 via Website

Tach!

Die Bilder in eine ImageView zu bekommen hab ich noch nicht probiert, kann mir aber nach kurzer Recherche vorstellen, dass das über setImageDrawable() geht und man das Drawable mit createFromPath() öffnen kann.

Also, createFromPath() geht nicht mit Assets. Stattdessen geht sowas, wobei image ein ImageView ist und context zum Beispiel eine Activity ist.
1try {
2 InputStream is = context.getAssets().open("dateiname mit pfad relativ zu assets");
3 image.setImageDrawable(Drawable.createFromStream(is, null));
4} catch (IOException e) {
5 // open() kann eine IO-Exception werfen, die hier oder anderswo abgefangen werden muss.
6}


Felix

Antworten