Nasza pierwsza aplikacja na Androida składa się z jednego ekranu, na którym znajduje się jeden przycisk. Naszym zadaniem jest dodanie akcji, która zostanie wykonana po jego wciśnięciu.
Na twoim komputerze powinny być zainstalowane:
- Android Studio wraz z Android SDK(pobierz)
- Java JDK w wersji 6 lub nowszej
- Git
Zaczynamy od pobrania tego projektu do naszego katalogu roboczego. Aby to zrobić musimy w linii komend wprodadzić następujące poklecenie:
git clone https://github.com/MakeThingsKrakow/MakeThingsKrakow.git
Po wykonaniu tej komendy otwieramy Andorid Studio i z menu wybieramy File -> Import Project... Po z naszego katalogu roboczego katalog MakeThingsKrakow, klikamy OK i gotowe.
Nasz projekt zostanie zaimportowany, a my będziemy mogli rozpocząć kodowanie.
Po zaimportowaniu naszego projektu w lewym panelu środowiska Android Studio pojawi się projekt MakeThingsKrakow
, który reprezentuje naszą aplikację.
Po rozwinięciu projektu zobaczymy jego strukturę katalogów.
Interesujące nas rzeczy znajdują się w katalogu: app/src/main
W podkatalogu java
znajduje się kod naszej aplikacji. Tutaj będziemy mogli zmienić to w jaki sposób zachowuje się nasza aplikacja.
W podkatalogu res
znajdują się zasoby, z których może korzystać nasza aplikacja. Tu znajdziemy nasze layouty, pliki graficzne oraz dzwiękowe, które możemy wykorzystać w naszej aplikacji.
Sercem i duszą naszej aplikacji jest czerwony przycisk znajdujący się na środku ekranu.
Po kliknięciu w przycisk nic się jednak jeszcze nie dzieje. Aby to zmienić, w pliku ButtonActivity
musimy odnaleźć funkcję onClick(View button)
. To co znajduje się w tzw. ciele tej funkcji, wykonywane jest za każdym razem gdy naciśniemy nasz przycisk.
Na początek do naszej dyspozycji mamy kilka prostych akcji:
Aby wyświetlić tekst, możemy skorzystać z akcji ShowTextAction
. Aby to zrobic wpisujemy w ciele metody onClick
komendę
new ShowTextAction("Hello!").perform(this);
Treść tekstu możemy oczywiście dowolnie zmodyfikować!
Aby zmienić kolor tła jednego z elementów interfejsu użytkownika, możemy skorzysać z akcji ChangeBackgroundColor
. Aby to zrobic wpisujemy w ciele metody onClick
komendę
new ChangeBackgroundColor("#00FF00").perform(button)
Ta komenda zmieni kolor przycisku na #00FF00, czyli zielony w zapisie szestnastkowym. Jeżeli chcemy, aby nasz przycisk zmienił kolor na inny, musimy zastąpić tę wartość inną dowolnie przez nas wybraną.
Poza zmianą koloru przycisku, możemy również zmienić kolor tła naszej aplikacji. Aby to zrobić, zamieniamy button w naszej komendzie na polecenie getWindow().getDecorView()
.
Przykładowo, aby zmienić kolor tła na niebieski, możemy skorzystać z akcji
new ChangeBackgroundColor("#0000FF").perform(getWindow().getDecorView())
bonus: Nasza aplikacja posiada również moduł do losowego generowania koloru. Aby z niego skorzystać, kolor w postaci szesnastkowej możemy zamienć na komendę: new RandomColorGenerator().getRandomColor()
Aby zmienić tak kolor tła naszej aplikacji, musimy wykonać komendę
new ChangeBackgroundColor(new RandomColorGenerator().getRandomColor()).perform(getWindiw().getDecorView())
Aby odtworzyć na naszym urządzeniu wybrany przez nas dźwięk, możemy skorzystać z akcji PlaySoundAction
.
W naszej aplikacji znajduje się już jeden plik dźwiękowy. Aby go odtworzyć możemy wykonać komendę:
new PlaySoundAction(R.raw.bazinga, this).play()
Jeżeli chcemy, aby aplikacja odwtorzyła jakiś inny dźwięk, musimy go skopiować do naszego projektu do katalogu app/src/main/res/raw
, a następnie podmienić w naszej komendzie ścieżkę do naszego pliku.
Przykładowo, jeżeli dodamy do naszego projektu plik syrena.mp3
, komenda która go odtworzy będzie wyglądać następująco:
new PlaySoundAction(R.raw.syrena, this).play()
Na przykład:
- Uaktywnić alarm wibracyjny: http://stackoverflow.com/questions/13950338/how-to-make-an-android-device-vibrate
- Zadzwonić pod jakiś numer
- Wysłać SMSa
- Uruchomić inną aplikację
- Odczytać jeden z sensorów urządzenia (np. temperaturę otoczenia, ciśnienie atmosferycznie itp.)
A może chcielibyście zmienić to jak wygląda nasza aplikacja? Nic prostrzego:
Ikona z której korzysta nasza aplikacja to app/src/main/res/drawable/logo.png
.
Nazwa naszej aplikacji snajduje się w pliku app/src/main/res/values/strings.xml
. Można tutaj również znaleźć i zmotyfikoawć etykietę naszego przycisku.
Kolory naszej aplikacji zadeklarowane są w pliku app/src/main/res/values/colors.xml
Jeżeli korzystasz ze swojego własnego telefonu i chcesz na nim uruchomić aplikację, musisz uaktywnić opcje debugowania w opcjach programistycznym swojego telefonu. Tutaj znajduje się artykuł na temat tego jak to zrobić: http://www.download.net.pl/jak-wlaczyc-debugowanie-usb-i-opcje-programistyczne-w-androidzie-42-43-i-44/n/3699/
- Podłączamy telefon do komputera na którym uruchomione jest Android Studio
- Z menu Run wybierz opcję Run.
- Na ekranie dialog "Choose Device" z którego wybieramy nasze urządzenie i klikamy OK.
Ta klasa reprezentuje pojedyńczy ekran w androidowej aplikacji.
Layout ekranu ustwia się za pomocą komendy setContentView(layoutId)
.
Z poziomy Activity kontrolujemy wyświetlanie treści oraz interakcje z użytwkownikiem.
W naszej aplikacji znajduje się jedno Activity - jest to klasa ButtonActivity
Layout to struktura w której deklarujemy elementy interfejsu użytkownika, które znajdują się na ekranie, wraz z ich układem przestrzennym oraz atrybutami (takimi jak rozmiar, kolor, wielkość czczionki itp.). Podstawowym layoutem w naszej aplikacji jest plik button_activity.xml
znajdujący się w folderze res/layout
naszego projektu.
View to pojedyńczy element interfejsu użytkownika taki jak Button
(czyli przycisk), albo TextView
(czyli pole tekstowe). W naszym projekcie zadeklarowany jest jeden element typu View - jest to Button
znajdujący się w layoucie button_activity.xml
ViewGroup to element interfejsu użytkownika służący do grupowania oraz lokowania elementów na ekranie. W naszej layoucie button_activity.xml
występuje jeden element typu ViewGroup
- jest to LinearLayout
. Zajmuje on całe dostępne miejsce (dzięki zadeklarowaniu jego wysokości i szerokości poprzez atrybuty android:layout_width="match_parent"
oraz android:layout_height="match_parent"
, a elementy które się w nim zjadują ustawiane są w jego centrum za sprawą zadeklarowania atrybutu android:gravity="center"
.