ANDROID WYKLAD

Wprowadzenie:

Klasy źródłowe – tutaj piszemy nasz kod.

2. R.java – Klasa generowana przez środowisko, która łączy część programistyczną z zasobami.

3. Binarki - są generowane przez środowisko,mało interesujące, tutaj raczej nie zaglądamy.

4. Zasoby (z ang. resources). Tutaj znajduje się wszystko co można oddzielić od kodu (obrazki, animacje, layouty, dźwięki, a nawet tekst)

5. AndroidManifest.xml - Zawiera informacje która Aktywność (klasa) powinna zostać uruchomiona jako pierwsza, jakich zezwoleń wymaga aplikacja, jaką ma nazwę itd.  

Debugowanie USB:

Ważna kwestia w programowaniu na androida to testowanie aplikacji na fizycznym urządzeniu. Często ułatwia nam to życie, gdy testujemy bardziej wymagające aplikacje, na przykład korzystające z kamery urządzenia. Kolejną niewątpliwą zaletą debugowania przez USB jest oszczędność czasu. O ile w przypadku słabszych komputerów użytkowanie symulatora androida może być obciążające, o tyle proces wdrożenia na fizyczny telefon jest zwykle prosty i niezwykle krótki.

ustawienia -> opcje programistyczne

*debugowanie usb

* pozorowanie lokalizacji- zagadnienia z geolokacją

* pozostaw wlączony – kiedy często sprawdzamy zmiany, faza końcowa

  1. Konfiguracja telefonu

  2. Konfiguracja komputera – podłączamy telefon, instalujemy sterowniki (z karty telefonu lub z Internetu)

  3. Wdrażanie projektu na telefon- - odpalamy Eclipse z pluginem ADT. Algorytm jest taki sam jak zwykle, klikamy na projekcie prawym przyciskiem myszy, wybieramy Run as a następnie Android Application. Niezwykle ważne jest, aby wersja Androida, któremu dedykujemy aplikację była zgodna z posiadaną przez nas na telefonie, gdyż Eclipse dynamicznie przydziela odpowiednim projektom odpowiednie urządzenia. Stąd też gdy podłączymy telefony z systemem 2.3.3 i 4.0.3, oraz stworzymy dwa takie projekty, to każdy z nich będzie widział tylko „swoj” telefon.

*„Use same device for future launches”, aby przy każdej kompilacji nie wybierać urządzenia ponownie

Programy:

Android dostarcza wielu kontrolek i wigetów. Korzystanie z podstawowych kontrolek jest niezwykle proste. Wystarczy przeciągnąć metodą drag and drop wybrany widget na ekran. Usuwanie realizujemy zaznaczając element i naciskając klawisz delete.

WAŻNE: Aby dostać się do kontrolki z poziomu kodu musimy znać jego id. Id ustawiamy klikając prawym przyciskiem myszy na elemencie i wybierając opcję: Assign ID… Następnie wpisujemy naszą nazwę i gotowe.

MENU: /tekst/obrazek/tekst+obrazek/

  1. Tworzenie za pomocą XML

Kod który dodajemy do Activity w którym chcemy aby pojawiało się menu:

@Override

 public boolean onCreateOptionsMenu(Menu menu) {

     getMenuInflater().inflate(R.menu.main, menu);

     return true;

}

  1. Tworzenie z poziomu kodu

public static final int PIERWSZY_ELEMENT = 1;

public static final int DRUGI_ELEMENT = 2;

public static final int TRZECI_ELEMENT = 3;

 

@Override

public boolean onCreateOptionsMenu(Menu menu) {

 

    menu.add(0, PIERWSZY_ELEMENT, 0, "Jeden");

    menu.add(1, DRUGI_ELEMENT, 0, "").setIcon(R.drawable.android_icon);

    menu.add(2, TRZECI_ELEMENT, 0, "Trzy").setIcon(R.drawable.android_icon);

 

    return true;

}

  1. Obsługa zdarzenia naciśnięcia przycisku menu

3.1 dla XML – wstawiamy ponizszy kod do Activity

@Override

    public boolean onOptionsItemSelected(MenuItem item) {

 

        String ktoryElement = "";

 

        switch (item.getItemId()) {

 

        case R.id.item1:

            ktoryElement = "pierwszy";

            break;

        case R.id.item2:

            ktoryElement = "drugi";

            break;

        case R.id.item3:

            ktoryElement = "trzeci";

            break;

        default:

            ktoryElement = "żaden";

 

        }

 

        Toast.makeText(getApplicationContext(), "Element: " + ktoryElement,

                Toast.LENGTH_LONG).show();

 

        return true;

    }

3.2 menu tworzone w kodzie:

@Override

public boolean onOptionsItemSelected(MenuItem item) {

 

    String ktoryElement = "";

 

    switch (item.getItemId()) {

 

    case PIERWSZY_ELEMENT:

        ktoryElement = "pierwszy";

        break;

    case DRUGI_ELEMENT:

        ktoryElement = "drugi";

        break;

    case TRZECI_ELEMENT:

        ktoryElement = "trzeci";

        break;

    default:

        ktoryElement = "żaden";

 

    }

 

    Toast.makeText(getApplicationContext(), "Element: " + ktoryElement, Toast.LENGTH_LONG).show();

 

    return true;

}

Cykl życia activity

Każdy widok, który chcemy wyświetlić na ekranie musi dziedziczyć po Activity. Daje nam to możliwość nadpisania niektórych jej metod. Najczęściej używane jest tylko onCreate():

Podstawowe Layouty:

  1. Lineral Layout(Horizontal)- od lewej do prawej

  2. Lineral Layout (Vertical) – z góry na dół

  3. Relative layout- elementy ukladają się zależnie od innych elementów

  4. Frame Layout- sluży do przechowywania tylko jednego widoku, który ma być widoczny nad innym

Screen orientation

Akcelerometr osadzony w tabletach lub smartfonach służy zazwyczaj do odpowiedniego dobierania orientacji w zależności od kąta nachylenia, daje nam to okazje do stworzenia lepszego interfejsu użytkownika ponieważ za każdą zmianą orientacji stoi także ponowne nadmuchiwanie layoutu, czyli wywoływana jest metoda onCreate().

Wyobraźmy sobie ,że nasza aplikacja dostarcza tylko standardowy layout – ten layout zawiera ListView wyświetlający elementów, w momencie naciśnięcia elementu(wywołania metody onListItemClick()) przenosimy się do kolejnego widoku w którym przedstawiamy szczegóły dotyczące ów elementu.

W momencie obrotu telefony, nic się na razie nie zmieni(poza orientacją oraz zmianą szerokości i wysokości), ponieważ nie dostarczyliśmy layoutu dla orientacji landscape, robiąc to moglibyśmy osiągnąć na przykład taki efekt:

Dla pewności, widok podstawowy(„normalny”) oraz obrócony, definiujemy odpowiednio jako:

 

Wdrożenie: Zastosowanie tego w praktyce nie wymaga od nas specjalnego nadwyrężania się. Android sam „wie” kiedy który layout zastosować, wymaga od nas tylko żeby odpowiednie layouty wrzucić do odpowiednich folderów, a w zasadzie jednego nowego folderu, który musimy nazwać layout-land, następnie w nim, tworzymy nowy layout, który ma obsługiwać orientacje landscape.

 Na pewno przyjdzie konieczność zmiany jakiegoś elementu w kodzie w zależności od aktualnej orientacji urządzenia. Taka operacja także nie jest trudna, wywołujemy metodę getConfiguration() która należy do klasy Resources – aktualny zasób możemy natomiast zdobyć przy pomocy metody getResources(),

1 getResources().getConfiguration().orientation

Przykład jak można zastosować takie sprawdzenie:

/* ze względu na to ze chce dla różnych orientacji inaczej wypełnić fragmenty,muszę sprawdzić w jakiej aktualnie orientacji się znajduje. */

if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE){

    PersonFragment articleFrag = (PersonFragment)

    getSupportFragmentManager().findFragmentById(R.id.detail_container);

    articleFrag.updateArticleView(person);

    //Ląduje tutaj w przypadku kiedy aktualną orientacją jest landscape.

}else{

    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

    args.putSerializable("context", person);

    newFragment.setArguments(args);

    transaction.replace(R.id.fragment_container, newFragment);

    ransaction.addToBackStack(null);

    transaction.commit();

}


Wyszukiwarka

Podobne podstrony:
android wyklad 02
Napęd Elektryczny wykład
wykład5
Psychologia wykład 1 Stres i radzenie sobie z nim zjazd B
Wykład 04
geriatria p pokarmowy wyklad materialy
ostre stany w alergologii wyklad 2003
WYKŁAD VII
Wykład 1, WPŁYW ŻYWIENIA NA ZDROWIE W RÓŻNYCH ETAPACH ŻYCIA CZŁOWIEKA
Zaburzenia nerwicowe wyklad
Szkol Wykład do Or
Strategie marketingowe prezentacje wykład
Wykład 6 2009 Użytkowanie obiektu
wyklad2
wykład 3
wyklad1 4

więcej podobnych podstron