Ćwiczenie 8 - Robert Arsoba

Transkrypt

Ćwiczenie 8 - Robert Arsoba
Programowanie urządzeń mobilnych w systemie Android
dr inż. Robert Arsoba
Ćwiczenie 8
Wykorzystanie układu RelativeLayout
Cel ćwiczenia
Celem ćwiczenia jest praktyczne zapoznanie się z zasadami użycia układu graficznego
RelativeLayout oraz wykształcenie umiejętności zastosowania tego układu do
tworzenia interfejsu użytkownika.
Zakres ćwiczenia obejmuje definiowanie układu RelativeLayout i umieszczanie w nim
kontrolek dziedziczących po klasie View (m.in. TextView, EditText, Button,
CheckBox, RadioGroup, RadioButton, DatePicker, TimePicker, Toast).
Przygotowanie się do ćwiczenia



Zapoznać się z wykładem „Interfejs użytkownika – układy”.
 Zapoznać się z hierarchią klas układów graficznych.
 Przestudiować opis dotyczący układu RelativeLayout.
 Powtórzyć wiadomości dotyczące kontrolek wykorzystywanych na
dotychczasowych ćwiczeniach.
Na podstawie dokumentacji Android SDK:
http://developer.android.com/reference/packages.html
zapoznać się w podstawowym zakresie z klasami RelativeLayout,
ScrollView, DatePicker, TimePicker.
Zapoznać się z przykładową aplikacją zamieszczoną w opisie ćwiczenia.
 Przeanalizować kod źródłowy aplikacji i porównać go z kodem aplikacji
w ćwiczeniu dotyczącym układu LinearLayout (ćwiczenie 7).
Zadania do wykonania
1. Uruchomić przykładową aplikację zamieszczoną w opisie ćwiczenia i przetestować
jej działanie.
2. Napisać aplikację, która umożliwia wprowadzenie dwóch czasów zegarowych
(godziny, minuty, sekundy) i określenie różnicy pomiędzy nimi wyrażonej
w godzinach, minutach i sekundach. Do wprowadzania danych i wyświetlenia
wyniku użyć trzech obiektów klasy TimePicker. Zastosować układ
RelativeLayout.
3. Napisać aplikację „zgadywankę”, w której losowana jest całkowita liczba
pseudolosowa z przedziału [1, 1000]. Użytkownik zna przedział z którego
wylosowano liczbę, ale nie zna wylosowanej wartości. Zadaniem jest odgadnięcie
wylosowanej liczby. Na wprowadzane przez użytkownika liczby aplikacja
odpowiada: „za mała”, „za duża” lub „zgadłeś za n-tym razem”. Zastosować układ
RelativeLayout i możliwość przewijania ekranu w pionie (ScrollView).
Materiały przygotowano w ramach projektu
„Inżynier pilnie poszukiwany”
Strona 1
Programowanie urządzeń mobilnych w systemie Android
dr inż. Robert Arsoba
Przykładowa aplikacja – plik Projekt5Activity.java
package org.przyklad;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.Toast;
public class Projekt5Activity extends Activity implements OnClickListener
{
private RadioButton rb1, rb2;
private EditText et1, et2;
private DatePicker dp;
private CheckBox chk1, chk2, chk3, chk4;
private Button btn1, btn2;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
rb1 = (RadioButton) this.findViewById(R.id.radio0);
rb2 = (RadioButton) this.findViewById(R.id.radio1);
rb1.setOnClickListener(this);
rb2.setOnClickListener(this);
et1 = (EditText) this.findViewById(R.id.editText1);
et2 = (EditText) this.findViewById(R.id.editText2);
dp = (DatePicker) this.findViewById(R.id.datePicker1);
chk1 = (CheckBox) this.findViewById(R.id.checkBox1);
chk2 = (CheckBox) this.findViewById(R.id.checkBox2);
chk3 = (CheckBox) this.findViewById(R.id.checkBox3);
chk4 = (CheckBox) this.findViewById(R.id.checkBox4);
chk1.setOnClickListener(this);
chk2.setOnClickListener(this);
chk3.setOnClickListener(this);
chk4.setOnClickListener(this);
btn1 = (Button) this.findViewById(R.id.button1);
btn2 = (Button) this.findViewById(R.id.button2);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
}
public void onClick(View v)
{
switch (v.getId())
{
case R.id.button1: wczytaj(); break;
case R.id.button2: this.finish(); break;
}
}
Materiały przygotowano w ramach projektu
„Inżynier pilnie poszukiwany”
Strona 2
Programowanie urządzeń mobilnych w systemie Android
dr inż. Robert Arsoba
private void wczytaj()
{
CharSequence imie = (CharSequence) et1.getText();
CharSequence nazwisko = (CharSequence) et2.getText();
int r = dp.getYear();
int m = dp.getMonth()+1; // miesiące liczone od 0
int d = dp.getDayOfMonth();
String s = (rb1.isChecked() ? "Pan " : "Pani ") + imie.toString() + ' ' +
nazwisko.toString();
s = s + "\nurodz. " + r + '-' + m + '-' + d + "\nzainteresowania: ";
if (chk1.isChecked()) s = s + chk1.getText().toString() + ", ";
if (chk2.isChecked()) s = s + chk2.getText().toString() + ", ";
if (chk3.isChecked()) s = s + chk3.getText().toString() + ", ";
if (chk4.isChecked()) s = s + chk4.getText().toString();
Toast toast = Toast.makeText(Projekt5Activity.this, s, Toast.LENGTH_LONG);
toast.show();
}
}
Przykładowa aplikacja – plik main.xml
Zwrócić uwagę na umieszczenie układu RelativeLayout wewnątrz elementu
ScrollView, co umożliwia przewijanie ekranu w pionie.
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<RadioButton
android:id="@+id/radio0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/rb1tekst" />
<RadioButton
android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/rb2tekst" />
</RadioGroup>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tv1tekst"
android:layout_below="@id/radioGroup1" />
Materiały przygotowano w ramach projektu
„Inżynier pilnie poszukiwany”
Strona 3
Programowanie urządzeń mobilnych w systemie Android
dr inż. Robert Arsoba
<EditText
android:id="@+id/editText1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:layout_toRightOf="@id/textView1"
android:layout_alignTop="@id/textView1" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tv2tekst"
android:layout_below="@id/editText1" />
<EditText
android:id="@+id/editText2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:layout_toRightOf="@id/textView2"
android:layout_alignTop="@id/textView2" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tv3tekst"
android:layout_below="@id/editText2"
android:layout_centerHorizontal="true" />
<DatePicker
android:id="@+id/datePicker1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/textView3"
android:layout_centerHorizontal="true" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tv4tekst"
android:layout_below="@id/datePicker1"
android:layout_centerHorizontal="true" />
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/chk1tekst"
android:layout_below="@id/textView4" />
<CheckBox
android:id="@+id/checkBox2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/chk2tekst"
android:layout_below="@id/checkBox1" />
<CheckBox
android:id="@+id/checkBox3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/chk3tekst"
android:layout_below="@id/checkBox2" />
<CheckBox
android:id="@+id/checkBox4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/chk4tekst"
android:layout_below="@id/checkBox3" />
Materiały przygotowano w ramach projektu
„Inżynier pilnie poszukiwany”
Strona 4
Programowanie urządzeń mobilnych w systemie Android
dr inż. Robert Arsoba
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btn1tekst"
android:layout_below="@id/checkBox4" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btn2tekst"
android:layout_toRightOf="@id/button1"
android:layout_alignTop="@id/button1" />
</RelativeLayout>
</ScrollView>
Wygląd interfejsu użytkownika zdefiniowanego w pliku main.xml
Materiały przygotowano w ramach projektu
„Inżynier pilnie poszukiwany”
Strona 5
Programowanie urządzeń mobilnych w systemie Android
dr inż. Robert Arsoba
Przykładowa aplikacja – plik strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Ankieta osobowa</string>
<string name="tv1tekst">Imię:</string>
<string name="tv2tekst">Nazwisko: </string>
<string name="tv3tekst">Data urodzenia:</string>
<string name="tv4tekst">Zainteresowania:</string>
<string name="rb1tekst">mężczyzna</string>
<string name="rb2tekst">kobieta</string>
<string name="btn1tekst">Wczytaj</string>
<string name="btn2tekst">Zakończ</string>
<string name="chk1tekst">film</string>
<string name="chk2tekst">literatura</string>
<string name="chk3tekst">muzyka</string>
<string name="chk4tekst">sport</string>
</resources>
Materiały przygotowano w ramach projektu
„Inżynier pilnie poszukiwany”
Strona 6

Podobne dokumenty