Android App: Hauptseite mit Auswahlliste

Siehe Chapter 6 aus: Head-First-Android-Development-2015

Auf dem Hauptbildschirm erscheint eine Liste von Optionen zur Auswahl, die man anklicken kann.

Nach der Auswahl wird die neue Aktivität aufgerufen.ListAuswahl_Android

 

Java-Struktur

  • Alle Aktivitäten (Auswahlen) erhalten eine Klasse.
    Es gibt die Hauptklasse (hier Top Level Activity) und  zu jeder Auswahl folgt eine Klasse (Klasse Drinks, Klasse Menüs, Klasse Standorte).
  • In der Anzeigeklassen wird das Anzeigen der Elemente verwaltet
  • Soll nach der ersten Auswahl noch weitere Details angezeigt werden, erhalten diese auch wieder eine Aktivitätsklasse.

 

Anzeigeklasse

public class Drink {
    private String name;
    private String description;
    private int imageResourceId;

    // drinks is an array of Drinks
    public static final Drink[] drinks = {     // Bild hinzufügen
            new Drink("Latte", "With milk", R.drawable.latte),
            new Drink("Cappu", "With chocolate", R.drawable.cappucino),
            new Drink("Filter", "With water", R.drawable.filter)
    };

    //Each Drink has a name, description, and an image ressource
    private Drink (String name, String description, int imageResourceId){
        this.name = name;
        this.description = description;
        this.imageResourceId = imageResourceId;
    }

    public String getDescription() {
        return description;
    }

    public String getName(){
        return name;
    }

    public int getImageResourceId(){
        return imageResourceId;
    }

    public String toString(){
        return this.name;
    }
}

 

Layout Liste einbauen

Man findet unter Container die Listview. Android_ListAuswahl

// top_level_activity.xml
<ListView
    android:id="@+id/list_options"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:entries="@array/options" />    // die Auswahlnamen in Array
// string.xml
<resources>
    ...
    <string-array name="options">
        <item>Drinks</item>
        <item>Food</item>
        <item>Stores</item>
    </string-array>

</resources>

 

Elemente der Auswahlklasse sollen antworten
Dies geschieht über einen EventListener. So hören die Klassenvariablen auf eine Aktivität. Um einen EventListener zu implementieren, muss die Methode OnItemClickListener()  implementiert werden.

 

 

..

 

 
DoppelteListAuswahl_Android

 

Android App: Ordner Ressourcen und Variable R

Der Ordner res beinhaltet die visuellen Dateien (geschrieben in xml) und verwaltet deren Anbindung an die Java-Aktivitäten.

Die Variable R

An sie sind alle xml-Definitionen angebunden. Über sie kann in Java auf die einzelen Definitionen zugegriffen werden. Als erstes wird über diese Variable die generellen Layout-Settings in der Funktion getCreat() geladen.

setContentView(R.layout.activity_top_level);

In den folgenden Aktivitäten-Codes werden spezifische Settings zu einer Ansicht (Layout) über die Variable gesetz. Oft über die id-Referenz:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

Hier werden die korrespondierenden Bilder über die Variable R geladen:

new Drink("Latte", "With milk", R.drawable.latte),

 

Der Ordner values

Die Einstellungen, die über die Variable R aufgerufen werden im Ordner ../res/values abgelegt. Alle Werte, die im Layout in der Datei ../res/layout/activiy_main.xml einer Ansicht zugewiesen werden, werden von Android Studio auch im Ordner  ../res/ values/ abgelegt. Dort hat jede Variable einen Namen und einen Wert.

Beispiel
Variable fürs Zuweisen von Text

// activity_main.xml

<TexView 
    android text="string/Willkommen !"   // Variablen-Wert setzen
    />

 

Speichern von Text per value

// activity_main.xml

<TexView 
    android text="@string/willkommen"     // Variablen-Name setzen
    />
// string.xml

<recources>
     <string name = "willkommen">Willkommen !</string>   // name, Wert
     </recources>

Speichern per reference ist vor allem beim Speichern mehrerer Auswahlen wichtig.

// activity_main.xml
<ListView
     android:entries="@array/options"
     />
// string.xml
<string-array name="options">      // mehrere Namen für eine Liste
    <item>Drinks</item>
    <item>Food</item>
    <item>Stores</item>
</string-array>

Android App: Zusammenfassung Layout

Prinzip von ViewGroups und Views

Auch das Layout ist hierarchisch bzw. über Vererbung aufgebaut. ViewGroups definieren die Grundansicht des Layouts wie z. B. ein <LinearLayout>  oder ein <RelativeLayout> . Views werden als User Interface Components bezeichnet. Es handelt sich um die konkreten Teile auf dem Layout wie z.B. ein Text   <TextView> , eine Taste, ein Schalter  <Button> oder eine Eingabezeile <editText> .

Auswahl über visuelle Hilfe
Im Layout-Ordner kann man die Elemente per xml (siehe Tab Text) oder über Auswahl/Platzieren (im Tab Design) direkt auf ein simuliertes Gerät laden.
Android_Layout_Visuel

 

Widgets sind interaktive Eingaben, die eine Handlung auslösen.

Android_Layout_Widget

 

TextFields sind aussschliesslich für Texteingaben gedacht. Android bietet bereits viele vordefinierte Input-Strukturen an, so dies eine Telefonnummer, ein normaler Text oder sei dies ein Pin.

Android_Layout_Textfields

..

 

 

..

Activity calls next Activity

Aufbau Haupt- und Nebenhandlungen

Zwei Aktivitäten werden  über eine Intent-Verknüpfung  miteinander verbunden. Welche Aktionsklasse als nächstes aufgerufen werden soll, definiert man bei der Intent-Implementation. Diese geschieht bei der Funktionsdefinition der XXOnClickXX()-Funktion.

// Die Main Activity

public class ChooseFlower extends Activity(..){  


   protected void onCreate(){       // per default da
     // details see below  
     ... 
   } 

   // wird aufgerufen, wenn Taste gedrückt wurde
   public void onClickFindFlower(View view){ // selber aufgebaute Funktion 
       ... 
   } 
}
public class TopLevelActivity extends AppCompatActivity {
    
    protected void onCreate(Bundle savedInstanceState) {
       // details below

       // definiert Listener mit onItemClick() Methode
    };
        
    // Add listener to list view
    ListView listView = (ListView) findViewById(R.id.list_options);
    listView.setOnClickListener(itemClickListener);   
}

Funktin onCreate()

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_top_level);

        // Listener (needed after as argument) 
        // in which the desired action is implemented for the click 

        AdapterView.OnItemClickListener itemClickListener = 
                        new AdapterView.OnItemClickListener(){

            // define own function: what happens after click
            public void onItemClick(AdapterView<?> listView, View v, int position, long id){

                // handel position of list elements
                if(position == 0){  // first element in List
                    Intent intent = new Intent(TopLevelActivity.this, DrinkCategoryActivity.class);
                    startActivity(intent);
                }
            }
        };

 

Intent der etwas sendet
Bsp. Bein Klicken wird ein Email versendet

public void onSendMessage(view View){
      ...
      Intent intent = new Intent(Intent.ACTION_SEND);
      intent.putExtra(Intent.EXTRA_TEXT, messageTExt);  // Text übergeben
      starActivity(intent);
}

 

..

Android App: Grundprinzip Handlung=Bildschirm

Grundprinzip
Zu jeder Handlung, die der User machen kann, wird ein Screen implementiert. Zu einem Screen gehören zwei Komponenten: sein Erscheinugnsbild (das Layout) und was gemacht werden kann (die Activity).
Layout_Acitivity

Activity
Bezeichnet eine einzelne Handlung, die der User vornehmen kann.
Die Handlung wird in Java geschrieben. Eine Handlung kann eine nächste aufrufen. Durch den Aufruf einer neuen Handlung, erscheint ein neuer Bildschirm.

Layout
Beschreib das Erscheinungsbild, die Userführung, um diese Handlung zu tun. Ein Layout-Wechsel bedeutet, dass man sich in einer anderen Activity befindet.
Das Layout ist in xml geschrieben und befindet sich im Verzeichnis: app/src/main/res/… Wobei im Unterverzeichnis ( ../layout/main.xml) die Hauptdatei für die Bildgestaltung steht. In den drei davorliegenden Unterverzeichnissen werden Bildschrirmauflösungen der verschiedenen Android-Geräten behandelt.

Programmablauf
Das Programm ruft  als erstes die MainActivity auf: das Hauptbild des Programms erscheint. Dann, je nach dem wie der User sich verhält (Klicken auf „Views“), werden andere Aktivitäten ausgelöst und dadurch andere Screens angezeigt.
Es besteht somit eine Hierarchie unter den Handlungen.

 

 

Android App: Projekt erstellen

Jedes Projekt basiert auf der Dualität von Handlung/Bildschirm auf. Ruft eine Benutzerin das Programm auf, so wird die erste Handlung, die MainActivity.java, gestartet und mit ihr, das Programm- Grund-Layout, das in der Datei activity_main.xml abgelegt ist.

Die Namen dieser zwei Hauptdateien werden beim Aufsetzen eines Projektes gefragt:

Android_Projektstart

Alle folgenden Aktivitäten mit ihren Anzeigen werden von der MainActivity (oder einer ihrer Aktivitäten) aufgerufen.

 

ADB (Android Debug Bridge)

Anstelle von ssh kann bei Androidgeräte über adb auf das Gerät zugegriffen werden.
Die ADB-Verbindung bleibt aufrecht erhalten, auch wenn der PC abgestellt wird.

Um ADB zu benutzen, wird SDK bzw. Android Tool installiert.

Aufbauen der VerbindungAufbauen der Verbindung

adb connect <ip>

Öffnet die Shell für Befehle

adb shell

Gibt die aktive Verbindungen an

adb devices

Einzelne Verbindung abbauen

adb disconnect

Alle Verbidungen abbauen

add kill-server