Android, Projektstruktur

Ein paar Notizen zum Aufbau eines Android Java Projektes. Wo ist was? Wie hängen die Dateien zusammen.

1) unter /res/values können Dateien mit beliebigen Namen liegen. Z.B. arrays.xml, strings.xml oder colors.xml.

Darauf zugreifen mit „@array/name1“, „@string/name2“ oder „@color/farbe1“. Das „s“ aus dem Dateinamen weglassen!

Beispiel Xmls:

/res/arrays.xml

<resources>
  <string-array name="Sortierung">
      <item>Standard</item>
      <item>Name</item>
  </string-array>
</resources>

/res/colors.xml

<resources>
    <color name="schwarz">#000000</color>
</resources>

/res/strings.xml

<resources>
  <string name="app_name">MyApp</string>
</resources>

/res/colors.xml

<resources>
    <!--  Definition des Themes 
          parent="android:Theme.Light" -->
    <style name="AmandoTheme">  
        <item name="android:windowBackground">@color/hintergrund</item>    
        <item name="android:textViewStyle">@style/TextStyleNormal</item>  
        <item name="android:listViewStyle">@style/ListView</item>       
        <item name="android:buttonStyle">@style/Schaltflaeche</item>                               
    </style>  
   
    <!-- Normalerweise sieht unser Text so aus: -->
    <style name="TextStyleNormal">
        <item name="android:textSize">18sp</item>   
        <item name="android:textColor">@color/textfarbe</item>
    </style>
    
    <!-- Ueberschriften sehen so aus: -->
    <style name="TextStyleUeberschrift"
           parent="@style/TextStyleNormal">
        <item name="android:textSize">24sp</item>           
        <item name="android:gravity">center</item>   
        <item name="android:paddingTop">10dp</item> 
	    <item name="android:paddingBottom">10dp</item> 
    </style>
</resources>

2) Daneben können in Verzeichnissen beliebigen Namens Sachen abgelegt werden. Z.B. /raw/hilfe_komplett.html.

Darauf zugreifen mit


import android.webkit.WebView;

  /**
   * Initialisiert WebKit mit einer HTML-Seite aus dem
   * Ressourcen-Ordner.
   * 
   * @param view WebView zur Darstellung von 
   *     Webinhalten.
   * @param context Kontext der Anwendung
   */
  private void initialisiereWebKitEinfach(
      final WebView view, final Context context) {
    final String mimetype = "text/html";
    final String encoding = "UTF-8";
    String htmldata;
    
    final int contextMenueId = R.raw.hilfe_komplett;    
    final InputStream is = context.getResources()
        .openRawResource(contextMenueId);

    try {
      if (is != null && is.available() > 0) {
        final byte[] bytes = new byte[is.available()];
        is.read(bytes);
        htmldata = new String(bytes);
        view.loadDataWithBaseURL(null, htmldata, mimetype,
            encoding, null);
      }
    } catch (IOException e) { }
  }

Naja nicht so schön. Viel Handarbeit. Wieso muß man das ganze ohne die „.html“ Dateiendung angeben?

3) /res/menu – Menüeintrage. Das Verzeichnis kann auch anders heißen.

Enthält Xmls wie z.B.

<menu xmlns:android=
    "http://schemas.android.com/apk/res/android"
>
  <item
    android:id="@+id/opt_geokontakt_bearbeiten"
    android:title="@string/men_geokontaktBearbeiten"
    android:icon="@android:drawable/ic_menu_edit"
  />
  <item
    android:id="@+id/opt_geokontakt_loeschen"
    android:title="@string/men_geokontaktLoeschen"
    android:icon="@android:drawable/ic_menu_delete"
  />
  <item
    android:id="@+id/opt_hilfe"
    android:title="@string/men_hilfeAnzeigen"
    android:icon="@android:drawable/ic_menu_help"
  />
</menu>

Zugreifen z.B.


import android.view.Menu;

public class MyActivity extends ListActivity {

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(
        R.menu.geokontakt_auflisten, menu);
    return super.onCreateOptionsMenu(menu);
  }

4) Guter Einstiegsartikel

5) Welche Verzeichnisse sind in /res vorgesehen?

Advertisements
Dieser Beitrag wurde unter Uncategorized veröffentlicht. Setze ein Lesezeichen auf den Permalink.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s