Android jak zacząć? Lekcja 2

21 sierpnia, 2013 w kategoriach: Systemy Operacyjne, Android

thumb
9,362 0
Dane:
  • Czas pracy: 20min
  • Poziom: Podstawowy
Opis:

Kolejna lekcja z cyklu rozpoczęcia zabawy z programowaniem na androida. Podziękowania dla strony http://script-tutorials.com za udostępnienie tutoriala. Link do plików z tutoriala w ostatnim kroku.

Pokaż/Ukryj wszystko

Oto nasza druga lekcja o tworzeniu aplikacji na Androia. Mam nadzieję, że podobała Wam się lekcja pierwsza i nie możecie doczekać się drugiej. To nasza własna seria tutoriali dotycząca rozwoju Androida. Dziś nauczymy się następującej rzeczy: jak posługiwać się aplikacja multi-page (lub też jak pracować z czynnościami, jak pracować z menu, jak używać zasobów typu string i wreszcie – jak przenosić zmienne pomiedzy stronami. Zmierzymy się także z elementem kontrolnym RatingBar, a także pokaże Wam jak dodawać obsługę zdarzeń bezpośrednio do kodu.

Kurs Android - tworzenie aplikacji


Wydawnictwo Strefa Kursów

Po pierwsze upewnij się, czy masz zainstalowane potrzebne środowisko dev. Zainstaluj program Eclipse, jeśli jeszcze tego nie zrobiłeś. Teraz musimy przygotować nowy projekt: File -> New -> Android Application. Możesz użyć ‘Lekcja druga’ jako nazwa aplikacji (Application Name) i nazwa projektu (Project Name). Następnym krokiem będzie wybranie ikony naszego projektu i zaznaczenie, że chcemy utworzyć nowe Blank Activity. Możemy to nazwać oknem głównym – Main Window.

Właśnie stworzyliśmy naszą nowa aplikacje!

Na chwilę obecną nasza aplikacja składa się z jednej strony. Jak dodać więcej stron? Musisz zrozumieć, że strona (lub okno) to dla androida działanie czy czynność jak kto woli (activity), zatem aby dodać stronę, musimy dodać nową czynność. Można to zrobić na kilka sposobów:

  • Możesz wybrać z menu: File -> New -> Other
  • Możesz kliknąć prawy przycisk myszy w ‘Package Explorer’
  • Możesz wcisnąć CTRL+N

Alt undefined

Jako naszą pierwszą dodatkową stronę aplikacji stwórzmy ‘About’ (o).

Alt undefined

Jak już wspomniałem wcześniej, chcę Wam pokazać jak używać zdefiniowanych wcześniej zasobów string. Domyślnie wszystkie te zasoby znajdują się w pliku ‘res/values/strings.xml’ – otwórz go. Zauważ, że możesz to zrobić w dwóch trybach – w GUI i jako plik tekstowy. Użyjmy zatem pierwszego trybu, aby dodać pare kluczy tekstu. Na obrazku poniżej możesz zobaczyć jak dodałem wartość kluczową ‘about’:

Alt undefined

Następnie będziesz mógł w prosty sposób używać wszystkich tych wartości w kodzie lub gdy będziesz edytował właściwości w GUI. Ja na przykład użyłem klucza ‘about’ jako wartość elementu tekstowego na naszej stronie ‘about’.

Alt undefined

Aby zakończyć pracę nad stroną dodajmy do niej nowy przycisk ‘Close’ (zamknij) – do zamykania strony i powrotu do strony głównej. W celu dodania zdarzenia „onclick” dla tego przycisku, możemy wskazać tą opcję w ustawieniach (tak jak w lekcji pierwszej) lub po prostu dodać taką możliwość bezpośrednio do kodu. Oto kompletny kod naszej strony ‘About’:

package com.example.lesson2;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class About extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_about);

// Button click handler
Button obClose = (Button)findViewById(R.id.buttonClose);
obClose.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {

// Close the 'About' page
finish();

}
});
}
}

Jak widzisz, możemy użyć ‘finish()’ aby zakończyć naszą czynność (w naszym przypadku okno ‘About’).

W programie Eclipse z menu pracuje się dość łatwo. Otwórz ‘res/menu/main_window.xml’ w Package Explorer, a następnie w podobny sposób, w jaki dodawaliśmy zasoby string, dodaj element menu.

Alt undefined

Nie zapomnij ustawić elementom ich ID, kolejności i tytułów. Jeśli uruchomisz naszą aplikację teraz, zauważysz, że żadne elementy nie działają. Musimy zatem dodać funkcję, które sprawią, że elementy menu zadziałają. Otwórz plik ‘src/com.example.lesson2/MainWindow.java’ w Package Explorer. Zawiera on wszystkie funkcje dla naszego okna głównego. Teraz z menu wybierz ‘Source -> Override / Implement Methods’. Musimy tu wyszukać metodę ‘onOptionsItemSelected’ (jest niemal na samym środku), zaznaczyć ja i kliknąć OK.

Alt undefined

Doda to prostą funkcje.

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
return super.onOptionsItemSelected(item);
}

Aby wyświetlić niektóre rezultaty na naszej stronie utworzyłem kilka elementów w layoucie okna głównego: kilka elementow textView i jeden editText: Teraz możemy modyfikować: ‘onOptionsItemSelected’

@Override
public boolean onOptionsItemSelected(MenuItem item) {
TextView otResult = (TextView) findViewById(R.id.editTextMenuResult);

switch (item.getItemId()) {
case R.id.about:
// Display 'About' page (activity)
Intent opAbout = new Intent(this, About.class);
startActivity(opAbout);
break;
case R.id.action_settings:
// Display 'Settings' page (activity) and wait for result
Intent opSettings = new Intent(this, Settings.class);
startActivityForResult(opSettings, SETTINGS_RESULT);
break;
case R.id.item1:
otResult.setText("You have selected: Item 1");
break;
case R.id.item2:
otResult.setText("You have selected: Item 2");
break;
case R.id.item3:
otResult.setText("You have selected: Item 3");
break;
default:
return super.onOptionsItemSelected(item);
}
return true;
}

Jak widzisz możemy łatwo posługiwać się naszymi ID (które przypisaliśmy w trakcie tworzenia elementów menu) w celu stwierdzenia, który element został wybrany. Użyliśmy funkcji ‘TextView::setText’ aby ustawić własny tekst dla naszego elementu textView. Co więcej, użyliśmy funkcji ‘startActivity’ aby wyświetlić okno ‘About’ oraz funkcji ‘startActivityForResult’ w celu wyświetlenia okna ‘Settings’ (gdyż będziemy oczekiwać odpowiedzi poprzez to okno).

Utworzyłem kolejną czynność (stronę) aby zademonstrować jak przemieszczać zmienne między czynnościami. Nowa strona to strona ‘Settings’, dodany został także nowy element ‘ratingBar’. Gdy klikniesz na gwiazdki, ta informacja zostanie wysłana do okna głównego. Jak zwykle będziemy musieli dodać potrzebną obsługę zdarzeń (plik (‘src/com.example.lesson2/Settings.java’). Spójrz na kod poniżej:

package com.example.lesson2;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.RatingBar;
import android.widget.RatingBar.OnRatingBarChangeListener;

public class Settings extends Activity {

public final static String SETTINGS_RESULT = "SETTINGS_RESULT";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);

RatingBar orRating = (RatingBar)findViewById(R.id.ratingBar1);
orRating.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {

@Override
public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
Intent opMain = new Intent();
opMain.putExtra(SETTINGS_RESULT, rating);
setResult(RESULT_OK, opMain);
finish();
}
});
}
}

Jest tutaj jedna funkcja: onRatingChanged. Ta funkcja jest przywoływana gdy klikniemy na gwiazdy elementu ‘ratingBar’. Teraz musimy zrobić kilka rzeczy: sprawić, by okno główne ‘przekazało’ wartość ‘rating’ do tego okna przy użyciu funkcji ‘putExtra’ i wreszcie ustawić jako główny wynik tego okna (RESULT_OK) i zamknąć okno (strona Settings). Ważne jest, by ustawić ‘RESULT_OK’ w celu upewnienia się, że okno zostało zamknięte poprawnie (to znaczy, że nie wystąpił „crash” lub nie zostało zamknięte przy użyciu klawisza back (cofnij), w przeciwnym wypadku otrzymamy wynik ‘RESULT_CANCELLED’. Aby zakończyć działania, musimy cofnąć się do klasy głównej (plik ‘src/com.example.lesson2/MainWindow.java’) i dodać kolejna funkcje.

private final static int SETTINGS_RESULT = 0;

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);

// catch Settings page result
if (requestCode == SETTINGS_RESULT && resultCode == RESULT_OK) {
// Get settings vote result and display it on the main page
float fRes = data.getFloatExtra(Settings.SETTINGS_RESULT, 0);
TextView otSettingsResult = (TextView) findViewById(R.id.textViewSettingsResult);
otSettingsResult.setText(fRes + " stars");
}
}

W tym kodzie możesz rozpoznać stronę, która przekazywała wartość oraz kod wynikowy przesłany przez nią.

Właśnie ukończyliśmy drugą lekcje dotycząca rozwoju Androida dla początkujących. Mam nadzieję, że Wam się podobała i że będzie Wam przydatna. Powodzenia i zapraszam na kolejne lekcje.

Dziękuję stronie http://script-tutorials.com za udostępnienie tego tutoriala.
Link do źródła: http://www.script-tutorials.com/android-development-lesson-2/

Pliki użyte w tutorialu możecie znaleźć na stronie źródłowej, do której link jest powyżej. Na samym dole tutoriala znajduję się przycisk: “Download the sources”.

Pokaż/Ukryj wszystko

Tutorial się podobał? Podziel się z innymi:

Dodaj komentarz