• Nie Znaleziono Wyników

Programowanie Aplikacji Mobilnych

N/A
N/A
Protected

Academic year: 2022

Share "Programowanie Aplikacji Mobilnych"

Copied!
12
0
0

Pełen tekst

(1)

Programowanie Aplikacji Mobilnych

Materiały do zajęć laboratoryjnych

mgr inż.

Kamil Zieliński

Katolicki Uniwersytet Lubelski Jana Pawła II w Lublinie

2020/2021

(2)

Spis treści

1. Android Studio – podstawy ... 3

2. Struktura projektu ... 6

3. Tworzenie wyglądu aktywności ... 7

4. Podstawy obsługi zdarzeń ... 11

5. Definiowanie treści tekstu ... 12

(3)

1. Android Studio – podstawy

Przed przystąpieniem do pracy nad aplikacjami dla systemu Android, konieczne jest przygotowanie środowiska developerskiego. Składa się ono z:

• Android Studio

• Android SDK

Android Studio można pobrać ze strony https://developer.android.com/studio/. Jest to darmowe narzędzie developerskie. Podczas instalacji konieczne jest połączenie z Internetem, ponieważ pobierane będą dodatkowe komponenty. Po pozytywnym zakończeniu procesu instalacji, można przejść do tworzenia nowego projektu. Uruchomienie Android Studio będzie skutkowało wyświetleniem okna powitalnego:

Najważniejsze funkcje, dostępne na ekranie powitalnym to rozpoczęcie nowego projektu (Start a new Android Studio project) oraz utworzenie projektu ze źródeł systemu kontroli wersji.

(4)

Po wybraniu jednej z opcji, wyświetlone zostanie okno, w którym należy wybrać szablon aplikacji. Szablony podzielone są na grupy – zależnie od urządzenia docelowego (telefon, zegarek, telewizor, pojazd, rozwiązanie wbudowane). Wybierzmy opcję Empty Activity z zakładki Phone and Tablet. W następnym kroku należy dokonać szczegółowej konfiguracji projektu.

(5)

W polu Name należy wpisać nazwę projektu. Konieczne jest też wskazanie lokalizacji, w której zostaną zapisane źródła aplikacji.

Pole Save location przeznaczone jest na wskazanie ścieżki zapisu projektu.

W polu Minimum SDK należy wskazać mininalne API, dla jakiego będzie przygotowywana aplikacja. Zadeklarowanie API 15 spowoduje, iż aplikacja nie będzie mogła uruchomić się na urządzeniu posiadającym starszą wersję systemu. Jednocześnie należy pamiętać, iż każda kolejna wersja API wprowadzała nowe funkcjonalności.

Pole language pozwala na wybranie języka (Kotlin lub Java) projektu.

Po wybraniu przycisku Finish wyświetlone zostanie okno projektu.

(6)

2. Struktura projektu

Struktura projektu w Android Studio przedstawiona została na poniższym rysunku.

• Plik manifest zawiera najważniejsze informacje o aplikacji

• Znajdują się tam takie parametry jak ikona, która będzie wyświetlana po zainstalowaniu aplikacji, domyślny wygląd aplikacji, wykorzystywane sdk czy deklaracje uprawnień

• Katalog java – klasy Javove (lub Kotlinowe), w tym aktywności

• Katalog res – zasoby programowanej aplikacji

• drawable – grafiki wykorzystywane w aplikacji

• layout – wygląd aktywności

• mipmap – ikony do uruchamiania aplikacji

• values – pliki dodatkowe, np. ciągi znakowe z aplikacji

Za wygląd aplikacji odpowiadają pliki xml, znajdujące się w katalogu res/layout.

(7)

3. Tworzenie wyglądu aktywności

Podczas tworzenia wyglądu aktywności w systemie Android, wykorzystywane layouty.

Layout deklaruje ułożenie elementów w jego wnętrzu. Można wyróżnić kilka różnych layoutów. Do najważniejszych nalezą:

LinearLayout (horizontal) – układ liniowy, w którym kolejne elementy stanowią nowe kolumny LinearLayout(vertical) – układ liniowy, w którym kolejne elementy stanowią nowe wiersze RelativeLayout – układ, w którym pozycja elementów definiowana jest względem inne elementu.

Layouty mogą się zagnieżdżać. Przygotujmy layout, w którym znajdzie się kilka wierszy, pozwalających na wprowadzenie danych studenta oraz średniej jego ocen.

Przygotowanie tego prostego layoutu, spowoduje wygenerowanie dużej ilości kodu:

(8)

<?xml version="1.0" encoding="utf-8"?>

<android.support.constraint.ConstraintLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context="com.myapplication.MainActivity">

<LinearLayout

android:layout_width="368dp"

android:layout_height="495dp"

android:orientation="vertical"

tools:layout_editor_absoluteX="13dp"

tools:layout_editor_absoluteY="8dp">

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal">

<TextView

android:id="@+id/textVieName"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="1"

android:text="Name" />

<EditText

android:id="@+id/editTextName"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:ems="10"

android:text="Input name" />

</LinearLayout>

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal">

<TextView

android:id="@+id/textViewSurname"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="1"

android:text="Surname" />

<EditText

android:id="@+id/editTextSurname"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:ems="10"

android:inputType="textPersonName"

android:text="Input surname" />

</LinearLayout>

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal">

(9)

<TextView

android:id="@+id/textViewSubject"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="1"

android:text="Subject" />

<EditText

android:id="@+id/editTextSubject"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:ems="10"

android:inputType="textPersonName"

android:text="Input subject" />

</LinearLayout>

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal">

<TextView

android:id="@+id/textView9"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="4.48"

android:text="Average grade" />

<EditText

android:id="@+id/editText12"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:ems="10"

android:inputType="numberDecimal"

android:text="Input avarage grade" />

</LinearLayout>

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal"

android:layout_marginTop="15dp">

<TextView

android:id="@+id/textView11"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="0.78"

android:text="Result:" />

<TextView

android:id="@+id/textView12"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="1.12"

android:text="none" />

</LinearLayout>

(10)

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal"

android:layout_marginTop="20dp">

<Button

android:id="@+id/button"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="Check" />

</LinearLayout>

</LinearLayout>

</android.support.constraint.ConstraintLayout>

Można zauważyć, iż w deklaracji wyglądu, wielokrotnie wykorzystywane są parametry

„match_parent” oraz „wrap_content”. Pierwszy z nich określa, iż dany elementu GUI ma dopasowywać się swoją zawartością do elementu, w którym się znajduje. Drugi z kolei, iż punktem odniesienia jest zawartość elementu.

(11)

4. Podstawy obsługi zdarzeń

Każdy przycisk może otrzymać właściwość onClick. Pozwala ona na wprowadzenie nazwy metody, która zostanie wywołana po wciśnięciu przycisku. Napiszmy metodę, która pobierze wysokość średniej i określi, czy student otrzymał stypendium. Metodę należy napisać w klasie, która jest powiązana z widokiem.

public void check(View v) {

EditText grade = (EditText)findViewById(R.id.editTextAvGrade);

TextView result = (TextView)findViewById(R.id.textViewResult);

double avGrade = Double.valueOf(grade.getText().toString());

if (avGrade < 4.5) {

result.setText("Scholarship: false :(");

} else {

result.setText("Scholarship: true! :)!");

} }

Powiązanie przycisku z metodą:

<Button

android:id="@+id/button"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="Check"

android:onClick="check"/>

(12)

5. Definiowanie treści tekstu

W poprzednich przykładach tekst wyświetlany w widoku, deklarowany był bezpośrednio w pliku xml. Android pozwala na zadeklarowanie wszystkich stringów poza layoutem aktywności. Przeznaczony jest do tego plik strings.xml, znajdujący się w katalogu res.

<resources>

<string name="app_name">My Application</string>

<string name="name">Name</string>

<string name="surname">Surname</string>

<string name="result">Result:</string>

</resources>

Połączenie elementu aktywności z treścią tekstu wygląda następująco:

<TextView

android:id="@+id/textView11"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="0.78"

android:text="@string/result" />

Od tego momentu, zmiana treści w pliku strings.xml, spowoduje zmianę we wszystkich elementach, powiązanych z daną nazwą stringa.

Zadania do samodzielnego wykonania:

• Zmodyfikuj kod aplikacji tak, by w kolejnych liniach wyświetlono komunikat: student imie nazwisko (wartości wprowadzone przez użytkownika) z kierunku kierunek otrzymał / nie otrzymał stypendium.

• Zmodyfikuj kod tak, by wszystkie komunikaty znalazły się w pliku strings.xml.

• Przygotuj aplikację pozwalającą na wykonanie 4 podstawowych operacji arytmetycznych dla 2 wprowadzonych przez użytkownika liczb. Przygotuj odpowiedni layout. Zadbaj o to, by komunikaty znalazły się w pliku strings.xml.

Cytaty

Powiązane dokumenty

Dominujący model rozwoju cukrzycy u kotów jest podobny do cukrzycy typu drugiego u ludzi (czyn- niki etiopatologiczne, czynniki predyspo- nujące), jednak uwagę zwraca ukierunko-

OPIS UKŁADU EKSTRAPOLATORA

Wszystkie budynki zostaną całkowicie odnowione, zyskają nową elewację oraz zostaną podłączone do centralnego ogrzewania.. Mieszkania posiadać będą osobne kuchnie lub

Również analiza widma z rysunku 10 wskazuje na występowanie drgań o skła- dowych wyższych, które mogą szcze- gólnie niekorzystnie oddziaływać na elementy

1 dolne skrzydło synklinalnego fałdu Organów, 2 górne skrzydło synklinalnego fałdu Organów wraz z rozwleczonym iałdem ,Małej Łąki, 3 dolne skrzydło

 Jeśli wiązanie typów jest statyczne, to sprawdzanie zgodności typów na ogół także może być statyczne, tzn.  Jeśli natomiast wiązanie

(19.28) Widzimy, że jeżeli praca jest wykonana przez układ (to znaczy wartość W jest dodatnia), to energia wewnętrzna układu maleje o wartość wykonanej pracy.. Odwrotnie,

Wielu autorów podawało sformułowanie piątego aksjomatu, w taki sposób by zapew- nić istnienie prawdopodobieństwa (w tym przypadku skończenie addytywnego).. Struktura