Android Studio - aplikacja z interfejsem GUI
1. Tworzymy projekt o nazwie "HelloWorld" dla API 15 (Android 4.0.3) z Basic Activity o nazwie MainActivity
(zob. opis tworzenia pierwszego projektu, File -> New -> New Project)
2. Przechodzimy do res\layout\content_main.xml (klikamy dwukrotnie)
* To jest plik włączony do activity_main.xml:
3. Zmieniamy zakładkę na Design - widok projektowania interfejsu.
Usuwamy TextView, który już jest i ma etykietę "Hello World!".
4. Układ ConstraintLayout pozwala na ustalanie bezwzględnej pozycji lub względem innych kontrolek (kulku po środku krawędzi)
5. Na podglądzie okna aplikacji umieszczamy nowy TextView, Button i ListView.
Przypinamy kontrolki z lewej do rodzica, a od góry - jedna do drugiej.
* Uwaga na identyfikatory kontrolek (liczby w przyrostkach) - ich umieszczane są w automatycznie generowanej klasie R.id (np. R.id.button1)
5. Aby z przyciskiem związać metodę przejdźmy do pliku MainActivity.java
6. Do klasy MainActivity dodajemy pole
private Button przycisk;
7. Konieczne będzie zaimportowanie klas (także te potrzebne później):
import android.widget.Button;
import android.view.View;
import android.widget.TextView;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.ArrayAdapter;
lub
import android.widget.*;
import android.view.View;
8. W klasie MainActivity tworzymy "nasłuchiwacza" (pole z "klasą anonimową"(?)).
Po kliknięciu wyświetlony zostanie komunikat "Hello World!"
private View.OnClickListener przyciskListener = new View.OnClickListener()
{
public void onClick(View arg0)
{
Toast.makeText(getApplicationContext(), "Hello World!", Toast.LENGTH_LONG).show();
}
};
9. W metodzie MainActivity.onCreate wiążemy pole przycisk z kontrolką button1,
a tą z nasłuchiwaczem
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
//konfiguracja przycisku
przycisk = (Button)findViewById(R.id.button1);
przycisk.setText("Kliknij mnie!");
przycisk.setOnClickListener(przyciskListener);
}
10. W podobny sposób wiążemy kontrolkę TextView i ListView (ale bez nasłuchiwaczy):
pole:
private TextView etykieta;
private ListView lista;
w metodzie MainActivity.onCreate:
etykieta = (TextView)findViewById(R.id.textView1);
lista = (ListView)findViewById(R.id.listView1);
11. Aby po kliknięciu przycisku zmieniała się etykieta dodajmy do metody
MainActivity.[przyciskListener].onClick:
etykieta.setText("Hello World!");
12. Wypełnianie listy (w metodzie MainActivity.onCreate):
String[] łańcuchy = new String[]
{
"tekst1",
"tekst2",
"tekst3",
"tekst4"
};
ArrayAdapter adapter = new ArrayAdapter(
this,
android.R.layout.simple_list_item_1, łańcuchy);
lista.setAdapter(adapter);
13. Reakcja na klikanie listy (także dodać do metody MainActivity.onCreate):
lista.setOnItemClickListener(
new AdapterView.OnItemClickListener()
{
public void onItemClick(AdapterView> parent, View view, int position, long id)
{
Toast.makeText(
getApplicationContext(),
"Kliknięta pozycja " + position + " (" + ((TextView) view).getText() + ")", Toast.LENGTH_LONG)
.show();
}
}
);
14. W pliku content_main.xml do ustalenia etykiety kontrolek TextView i Button używamy prostego tekstu
zamiast odwołania do zasobów. Aby to poprawić przejdźmy do pliku res/values/strings.xml.
a) Do listy łańcuchów wstawmy dwa łańcuchy o nazwach "etykietaPrzycisk" i "etykietaTextView".
Kliknij mnie!Aplikacja GUI
b) Wracamy do pliku content_main.xml i zmieniamy własności android:text obu kontrolek:
* Aby zmniejszyć rozmiar projektu do spakowania, można usunąć podfoldery build i app/build.
Oba foldery zostaną automatycznie odtworzone po wczytaniu projektu do AS.