Witaj Świecie w Androidzie
23 October 2008
Comments
Poznanie nowego narzędzia, czy języka zaczyna się od standardowego "witaj świecie". W przypadku androida witaj świecie składa się z:
- Stworzenia projektu Android w Eclipse
- Skonstruowania interfejsu
- Uruchomienia kodu
Stworzenie projektu
Zakładam że mamy już zainstalowaną wtyczkę w Eclipse. By stworzyć nowy projekt wystarczy:- Tworzymy nowy projekt wybierając w menu: File > New > Project. Z listy dostępnych typów projektów wybieramy "Android Project".
- Następnie podajemy dane projektu, przykładowo:
Gdzie:
- Project Name to nazwa katalogu, który zawierać będzie cały kod projektu.
- Package Name to nazwa (przestrzeń nazw) dla projektu stosująca reguły nazewnictwa pakietów w Javie (odwrotna notacja domenowa). Ważne jest by nazwa była unikalna.
- Activity Name to nazwa klasy Aktywności (Activity) jaka zostanie stworzona wraz z projektem.
- Application Name to wyświetlana w Androidzie nazwa aplikacji.
- Po podaniu danych stworzony zostanie projekt zawierający wymaganą strukturę katalogów oraz podstawowe pliki.
- W naszym przykładzie znajdziemy klasę HelloAndroid (HelloAndroid.java) w HelloAndroid > src > com.android.hello o kodzie:
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); } }
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);
}
}
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". 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ę.
Możemy też przjeść na stronę główną i zapoznać się z dostępnymi aplikacjami, np. przeglądarką internetową:
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!"/>
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);
}
}
RkBlog
Comment article