RkBlog

Hardware, programming and astronomy tutorials and reviews.

Witaj Świecie w Androidzie

Przykład prostej aplikacji Androida, obsługa Androida przez wbudowany emulator Qemu.

Poznanie nowego narzędzia, czy języka zaczyna się od standardowego "witaj świecie". W przypadku androida witaj świecie składa się z:

Stworzenie projektu

Zakładam że mamy już zainstalowaną wtyczkę w Eclipse. By stworzyć nowy projekt wystarczy: W tej chwili można już uruchomić emulatora, lecz zmodyfikujmy najpierw kod aplikacji tak by wyświetlała "witaj świecie". Edytuj HelloAndroid.java i zmień kod na:
package com.android.hello;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class HelloAndroid extends Activity {
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       TextView tv = new TextView(this);
       tv.setText("Witaj świecie!");
       setContentView(tv);
   }
}
W Androidzie interfejs użytkownika składa się z hierarchii klas zwanych widokami (Views). Widok to obiekt, który można narysować jak przycisk, animacja, czy jak w powyższym przykładzie - etykieta tekstowa. W przykładzie wykorzystaliśmy klasę TextView dziedzicząc ją:
TextView tv = new TextView(this);
Argument przekazywany do konstruktora TextView to instancja Context. Jest to uchwyt do systemu dostarczający usługi takie jak rozwiązywanie zapotrzebowania na zasoby, uzyskiwanie dostępu do baz danych, ustawień itd. Klasa aktywności dziedziczy klasę Context więc spełnia wymagania. Gdy mamy już etykietę tekstową musimy podać tekst jaki ma zostać wyświetlony:
tv.setText("Witaj świecie!");
Gdy to zrobimy musimy połączyć nasz TextView z ekranem za pomocą
setContentView(tv);
Metoda aktywności setContentView() wskazuje systemowi który widok powinien być przypisany interfejsowi aktywności. Jeżeli aktywność nie wywoła tej metody to system wyświetli pusty ekran.

Uruchamianie emulatora i aplikacji

Wraz z SDK otrzymujemy emulator telefonu z Androidem oparty o Qemu. By odpalić emulator wystarczy skorzystać w Eclipse z opcji "Run". By uzyskać dostęp do ustawień emulatora i uruchamianej aplikacji wystarczy skorzystać z Run > Run Configurations, gdzie możemy określić projekt i aktywność do uruchomienia (szczególnie gdy mamy ich kilka), czy też wybrać rozmiar i układ wyświetlacza z jakim ma wystartować emulator. Po wprowadzeniu danych wystarczy kliknąć "Run".
hello_world_4
Jeżeli korzystamy z Linuksa to warto zainstalować moduł Kernela kqemu i załadować go przed uruchomieniem emulatora:
modprobe kqemu
Moduł powinien być w pakietach dystrybucji, a jego obecność znacząco przyśpiesza działanie emulatora Qemu. Uruchamiając emulator na początku zobaczymy szary napis "Android" na środku wyświetlacza, później napis z logiem i po załadowaniu się systemu naszą aplikację.
andqemu1
andqemu2
andqemu3
Możemy też przjeść na stronę główną i zapoznać się z dostępnymi aplikacjami, np. przeglądarką internetową:
andqemu4
andqemu5
andqemu6

Interfejs w XML

Definiowanie interfejsu w kodzie aplikacji na dużą skalę jest złym rozwiązaniem, gdyż utrudnia jego zmianę w rozbudowanych aplikacjach wymuszając np. spore zmiany w kodzie dla prostych zmian interfejsu. W tym celu Android udostępnia format definiowania interfejsu w XML. Oto przykład odpowiadający "witaj świecie" z powyższego kodu:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:text="Witaj świecie!"/>
  
Format jest dość prosty i składa się z drzewa tagów, gdzie każdy tag to nazwa klasy Widoku. W tym przypadku mamy tylko jeden element, TextView. Podany kod zapisujemy w /res/layout/main.xml. Kod HelloWorld.java edytujemy do postaci:
package com.android.hello;

import android.app.Activity;
import android.os.Bundle;

public class HelloAndroid extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}
Uruchomienie aplikacji da taki sam efekt. Wykorzystaliśmy tutaj plik R.java zawierający indeks wszystkich zasobów aplikacji (R.layout.main). Po wstawieniu kodu XML interfejsu plik ten został przebudowany i dodana została informacja o dodanym interfejsie. R.java ułatwia dostęp w kodzie do elementów aplikacji w prosty i zwarty sposób. Zainteresowani tworzeniem aplikacji powinni zapoznać się z dokumentacją androida (dołączaną także do SDK).
RkBlog

23 October 2008;

Comment article