Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00070 006723 13591752 na godz. na dobę w sumie
Programowanie aplikacji dla Androida. The Big Nerd Ranch Guide. Wydanie III - ebook/pdf
Programowanie aplikacji dla Androida. The Big Nerd Ranch Guide. Wydanie III - ebook/pdf
Autor: , , Liczba stron: 744
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-283-3637-7 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie mobilne >> android
Porównaj ceny (książka, ebook (-20%), audiobook).

Android jest systemem stworzonym dla urządzeń mobilnych. Pod jego kontrolą pracują smartfony, tablety, lodówki, telewizory i wszystko wskazuje na to, że internet rzeczy będzie również w dużej części androidowy. Wielu programistów widzi w tym niespotykane dotąd możliwości, jednak pisanie aplikacji dla Androida wcale nie jest łatwym zadaniem. Wielu programistów przekonało się, że sama umiejętność kodowania nie jest wystarczająca. Biegłe poruszanie się po tym środowisku wymaga opanowania licznych nowych koncepcji i technik. Innymi słowy, rozpoczynając naukę programowania dla Androida, trzeba nastawić się na intensywną naukę wielu nowych rzeczy w krótkim czasie!

Jeśli umiesz pisać zorientowany obiektowo kod w Javie i postanowiłeś zacząć tworzyć aplikacje dla Androida, wziąłeś do ręki odpowiednią książkę. Jest to praktyczny, przystępnie napisany przewodnik, który bezboleśnie przeprowadzi Cię przez trudności, jakie napotyka właściwie każdy początkujący programista aplikacji dla Androida. Opisano tu podstawowe zagadnienia związane z tworzeniem projektu i używaniem aktywności, układów oraz intencji jawnych i niejawnych. Pokazano, jak korzystać z fragmentów, tworzyć menu i jak pracować na plikach multimedialnych. Przede wszystkim zaś przedstawiono wszystkie ważne szczegóły projektowania i rozwijania aplikacji mobilnej.

W książce poruszono wiele zagadnień, między innymi:

Autorzy są ekspertami i instruktorami z firmy Big Nerd Ranch, która specjalizuje się w rozwijaniu innowacyjnych aplikacji mobilnych.

Android — zaprogramuj przyszłość!


Bill Phillips jest współtwórcą i instruktorem serii szkoleń Big Nerd Ranch Android Bootcamp. Jest również wykładowcą, prowadzi bloga, lubi dobrą literaturę, komponuje muzykę i pisze książki.

Chris Stewart jest kierownikiem zespołu do spraw Androida. Zawsze dąży do perfekcji w tym, co robi. W wolnym czasie chodzi po górach i podróżuje.

Kristin Marsicano jest deweloperem aplikacji dla systemu Android. Jest pasjonatem nauki i rozwoju oprogramowania. W wolnych chwilach gotuje, zajmuje się jogą lub po prostu uczy się czegoś nowego.

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Tytuł oryginału: Android Programming: The Big Nerd Ranch Guide (3rd Edition) Tłumaczenie: Grzegorz Kowalczyk ISBN: 978-83-283-3636-0 Authorized translation from the English language edition, entitled: ANDROID PROGRAMMING: THE BIG NERD RANCH GUIDE, Third Edition; ISBN 0134706056; by Bill Phillips; and by Chris Stewart; and by Kristin Marsicano; published by Pearson Education, Inc; publishing as The Big Nerd Ranch Guides. Copyright © 2017 by Big Nerd Ranch, LLC. Ali rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, e1ectronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc. Polish language edition published by HELION SA. Copyright © 2017. The 10-gallon hat with propeller logo is a trademark of Big Nerd Ranch, Inc. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Wydawnictwo HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog książek) Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/prapan Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Pliki z przykładami omawianymi w książce można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/prapan.zip Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność (cid:54)(cid:83)(cid:76)(cid:86)(cid:3)(cid:87)(cid:85)(cid:72)(cid:285)(cid:70)(cid:76) (cid:20) (cid:51)(cid:82)(cid:93)(cid:81)(cid:68)(cid:90)(cid:68)(cid:81)(cid:76)(cid:72)(cid:3)(cid:86)(cid:92)(cid:86)(cid:87)(cid:72)(cid:80)(cid:88)(cid:3)(cid:36)(cid:81)(cid:71)(cid:85)(cid:82)(cid:76)(cid:71) (cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17) (cid:20)(cid:28) Wymagania wstępne.............................................................................................................................20 Co nowego w trzecim wydaniu? .........................................................................................................20 Jak korzystać z tej książki?....................................................................................................................20 Jak zorganizowana jest ta książka .......................................................................................................21 Wyzwania ........................................................................................................................................22 Czy jesteś dociekliwy?....................................................................................................................22 Styl kodowania.......................................................................................................................................22 Konwencje typograficzne.....................................................................................................................23 Wersje systemu Android......................................................................................................................23 (cid:49)(cid:76)(cid:72)(cid:93)(cid:69)(cid:219)(cid:71)(cid:81)(cid:72)(cid:3)(cid:81)(cid:68)(cid:85)(cid:93)(cid:219)(cid:71)(cid:93)(cid:76)(cid:68) (cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17) (cid:21)(cid:24) Pobieranie i instalowanie Android Studio.........................................................................................25 Pobieranie starszych wersji środowiska SDK.............................................................................25 Urządzenie sprzętowe...........................................................................................................................26 (cid:55)(cid:90)(cid:82)(cid:77)(cid:68)(cid:3)(cid:83)(cid:76)(cid:72)(cid:85)(cid:90)(cid:86)(cid:93)(cid:68)(cid:3)(cid:68)(cid:83)(cid:79)(cid:76)(cid:78)(cid:68)(cid:70)(cid:77)(cid:68)(cid:3)(cid:71)(cid:79)(cid:68)(cid:3)(cid:86)(cid:92)(cid:86)(cid:87)(cid:72)(cid:80)(cid:88)(cid:3)(cid:36)(cid:81)(cid:71)(cid:85)(cid:82)(cid:76)(cid:71) (cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17) (cid:21)(cid:26) Podstawowe elementy aplikacji...........................................................................................................28 Tworzenie projektu aplikacji dla systemu Android .........................................................................29 Poruszanie się w Android Studio........................................................................................................33 Tworzenie układu interfejsu użytkownika ........................................................................................34 Hierarchia widoków.......................................................................................................................38 Atrybuty widgetów.........................................................................................................................39 Tworzenie zasobów tekstowych...................................................................................................40 Podgląd układu ...............................................................................................................................41 Od pliku układu XML do obiektów klasy View................................................................................42 Zasoby i identyfikatory zasobów..................................................................................................43 Podłączanie widgetów ..........................................................................................................................45 Pobieranie odwołań do widgetów................................................................................................46 Tworzenie obiektów nasłuchujących ..........................................................................................47 Tworzenie komunikatów toast............................................................................................................49 Zastosowanie mechanizmu dopełniania kodu...........................................................................50 Uruchamianie aplikacji w emulatorze................................................................................................51 Dla dociekliwych: proces budowania aplikacji .................................................................................55 Narzędzia wspomagające budowanie aplikacji..........................................................................56 Wyzwania ...............................................................................................................................................56 Wyzwanie: dostosowywanie komunikatów toast do własnych potrzeb .......................................57 Poleć książkęKup książkę (cid:51)(cid:85)(cid:82)(cid:74)(cid:85)(cid:68)(cid:80)(cid:82)(cid:90)(cid:68)(cid:81)(cid:76)(cid:72)(cid:3)(cid:68)(cid:83)(cid:79)(cid:76)(cid:78)(cid:68)(cid:70)(cid:77)(cid:76)(cid:3)(cid:71)(cid:79)(cid:68)(cid:3)(cid:36)(cid:81)(cid:71)(cid:85)(cid:82)(cid:76)(cid:71)(cid:68)(cid:17)(cid:3)(cid:55)(cid:75)(cid:72)(cid:3)(cid:37)(cid:76)(cid:74)(cid:3)(cid:49)(cid:72)(cid:85)(cid:71)(cid:3)(cid:53)(cid:68)(cid:81)(cid:70)(cid:75)(cid:3)(cid:42)(cid:88)(cid:76)(cid:71)(cid:72) (cid:21) (cid:22) (cid:23) (cid:54)(cid:92)(cid:86)(cid:87)(cid:72)(cid:80)(cid:3)(cid:36)(cid:81)(cid:71)(cid:85)(cid:82)(cid:76)(cid:71)(cid:3)(cid:76)(cid:3)(cid:90)(cid:93)(cid:82)(cid:85)(cid:93)(cid:72)(cid:70)(cid:3)(cid:48)(cid:57)(cid:38) (cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17) (cid:24)(cid:28) Tworzenie nowej klasy .........................................................................................................................60 Generowanie getterów i setterów.................................................................................................61 Wzorzec MVC a system Android.......................................................................................................63 Zalety stosowania wzorca MVC...................................................................................................64 Aktualizacje warstwy widoku ..............................................................................................................65 Aktualizacja warstwy kontrolera.........................................................................................................67 Uruchamianie aplikacji na urządzeniu fizycznym ...........................................................................71 Podłączanie urządzenia fizycznego..............................................................................................71 Konfigurowanie urządzenia do pracy ze środowiskiem deweloperskim...............................72 Dodawanie ikon.....................................................................................................................................74 Dodawanie nowych zasobów do projektu aplikacji ..................................................................75 Odwołania do zasobów w kodzie XML.......................................................................................77 Wyzwanie: dodaj listener do widoku TextView ...............................................................................78 Wyzwanie: dodaj przycisk Poprzednie ..............................................................................................78 Wyzwanie: od przycisku Button do przycisku ImageButton..........................................................79 (cid:38)(cid:92)(cid:78)(cid:79)(cid:3)(cid:318)(cid:92)(cid:70)(cid:76)(cid:68)(cid:3)(cid:68)(cid:78)(cid:87)(cid:92)(cid:90)(cid:81)(cid:82)(cid:285)(cid:70)(cid:76)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17) (cid:27)(cid:20) Logowanie cyklu życia aktywności .....................................................................................................83 Tworzenie dziennika komunikatów............................................................................................83 Zastosowanie panelu Logcat.........................................................................................................85 Badanie cyklu życia aktywności w praktyce ...............................................................................87 Zmiana orientacji urządzenia a cykl życia aktywności ....................................................................90 Konfiguracje urządzeń i zasoby alternatywne............................................................................90 Zapisywanie danych przy zmianie orientacji urządzenia................................................................95 Nadpisywanie metody onSaveInstanceState(Bundle) ..............................................................95 Jeszcze kilka słów o cyklu życia aktywności ......................................................................................97 Dla dociekliwych: bieżący proces czyszczenia aktywności..............................................................99 Dla dociekliwych: poziomy logowania i odpowiadające im metody...........................................100 Wyzwanie: zapobieganie wielokrotnym odpowiedziom na to samo pytanie ............................101 Wyzwanie: ocena poziomu poprawności odpowiedzi...................................................................101 (cid:39)(cid:72)(cid:69)(cid:88)(cid:74)(cid:82)(cid:90)(cid:68)(cid:81)(cid:76)(cid:72)(cid:3)(cid:68)(cid:83)(cid:79)(cid:76)(cid:78)(cid:68)(cid:70)(cid:77)(cid:76)(cid:3)(cid:71)(cid:79)(cid:68)(cid:3)(cid:86)(cid:92)(cid:86)(cid:87)(cid:72)(cid:80)(cid:88)(cid:3)(cid:36)(cid:81)(cid:71)(cid:85)(cid:82)(cid:76)(cid:71)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:20)(cid:19)(cid:22) Wyjątki i ślad stosu .............................................................................................................................104 Diagnozowanie problemów........................................................................................................106 Logowanie śladów stosu ..............................................................................................................106 Ustawianie punktów przerwania w kodzie...............................................................................108 Zastosowanie pułapek z wyjątkami ...........................................................................................111 Mechanizmy debugowania specyficzne dla systemu Android.....................................................112 Korzystanie z programu Android Lint......................................................................................112 Problemy z klasą R .......................................................................................................................114 Wyzwanie: zastosowanie narzędzia Layout Inspector...................................................................115 Wyzwanie: śledzenie alokacji zasobów pamięci .............................................................................116 (cid:25) Poleć książkęKup książkę (cid:54)(cid:83)(cid:76)(cid:86)(cid:3)(cid:87)(cid:85)(cid:72)(cid:285)(cid:70)(cid:76) (cid:24) (cid:55)(cid:90)(cid:82)(cid:77)(cid:68)(cid:3)(cid:71)(cid:85)(cid:88)(cid:74)(cid:68)(cid:3)(cid:68)(cid:78)(cid:87)(cid:92)(cid:90)(cid:81)(cid:82)(cid:285)(cid:201)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:20)(cid:20)(cid:28) Konfigurowanie drugiej aktywności.................................................................................................120 Tworzenie nowej aktywności......................................................................................................121 Podklasa nowej aktywności.........................................................................................................124 Deklarowanie aktywności w manifeście aplikacji....................................................................124 Dodawanie przycisku podpowiedzi do aktywności QuizActivity.........................................125 Uruchamianie aktywności .................................................................................................................127 Komunikowanie się z intencjami...............................................................................................128 Przekazywanie danych między intencjami......................................................................................129 Używanie danych typu extras w intencjach .............................................................................130 Pobieranie wyników z aktywności podrzędnej........................................................................134 Jak system Android widzi Twoje aktywności..................................................................................138 Wyzwanie: zamykanie luk dla oszustów..........................................................................................141 (cid:25) (cid:58)(cid:72)(cid:85)(cid:86)(cid:77)(cid:72)(cid:3)(cid:36)(cid:81)(cid:71)(cid:85)(cid:82)(cid:76)(cid:71)(cid:3)(cid:54)(cid:39)(cid:46)(cid:3)(cid:76)(cid:3)(cid:78)(cid:82)(cid:80)(cid:83)(cid:68)(cid:87)(cid:92)(cid:69)(cid:76)(cid:79)(cid:81)(cid:82)(cid:285)(cid:201)(cid:3)(cid:68)(cid:83)(cid:79)(cid:76)(cid:78)(cid:68)(cid:70)(cid:77)(cid:76) (cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:20)(cid:23)(cid:22) Wersje środowiska Android SDK.....................................................................................................143 Kompatybilność aplikacji z różnymi wersjami systemu Android ...............................................144 Rozsądne minimum.....................................................................................................................145 Minimalna wersja SDK................................................................................................................147 Docelowa wersja SDK..................................................................................................................147 Wersja kompilacji SDK ...............................................................................................................147 Bezpieczne dodawanie kodu z nowszych wersji API..............................................................148 Korzystanie z dokumentacji dla deweloperów aplikacji systemu Android................................151 Wyzwanie: raportowanie wersji SDK...............................................................................................153 Wyzwanie: ograniczenie podpowiadania ........................................................................................154 (cid:41)(cid:85)(cid:68)(cid:74)(cid:80)(cid:72)(cid:81)(cid:87)(cid:92)(cid:3)(cid:90)(cid:3)(cid:76)(cid:81)(cid:87)(cid:72)(cid:85)(cid:73)(cid:72)(cid:77)(cid:86)(cid:76)(cid:72)(cid:3)(cid:88)(cid:318)(cid:92)(cid:87)(cid:78)(cid:82)(cid:90)(cid:81)(cid:76)(cid:78)(cid:68)(cid:3)(cid:76)(cid:3)(cid:80)(cid:72)(cid:81)(cid:72)(cid:71)(cid:318)(cid:72)(cid:85)(cid:3)(cid:73)(cid:85)(cid:68)(cid:74)(cid:80)(cid:72)(cid:81)(cid:87)(cid:181)(cid:90) (cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:20)(cid:24)(cid:24) Potrzeba elastyczności interfejsu użytkownika...............................................................................155 Wprowadzenie do zastosowania fragmentów ................................................................................157 Uruchamianie aplikacji CriminalIntent...........................................................................................158 Tworzenie nowego projektu .......................................................................................................160 Dwa typy fragmentów..................................................................................................................162 Dodawanie zależności w Android Studio.................................................................................162 Tworzenie klasy Crime................................................................................................................165 Hostowanie fragmentów interfejsu użytkownika...........................................................................166 Cykl życia fragmentu ...................................................................................................................167 Dwa podejścia do hostowania fragmentów..............................................................................168 Definiowanie widoku kontenera................................................................................................168 Tworzenie fragmentu interfejsu użytkownika................................................................................170 Definiowanie układu fragmentu CrimeFragment...................................................................170 Tworzenie klasy CrimeFragment...............................................................................................172 Dodawanie fragmentów interfejsu użytkownika do instancji klasy FragmentManager ..........177 Transakcje fragmentów ...............................................................................................................179 FragmentManager i cykl życia fragmentów .............................................................................180 Architektura aplikacji wykorzystującej fragmenty.........................................................................182 Powód, dla którego wszystkie nasze aktywności używają fragmentów................................182 Dla dociekliwych: fragmenty i biblioteka wsparcia........................................................................184 Dla dociekliwych: dlaczego fragmenty z biblioteki wsparcia są bardziej użyteczne?................185 (cid:26) (cid:26) Poleć książkęKup książkę (cid:51)(cid:85)(cid:82)(cid:74)(cid:85)(cid:68)(cid:80)(cid:82)(cid:90)(cid:68)(cid:81)(cid:76)(cid:72)(cid:3)(cid:68)(cid:83)(cid:79)(cid:76)(cid:78)(cid:68)(cid:70)(cid:77)(cid:76)(cid:3)(cid:71)(cid:79)(cid:68)(cid:3)(cid:36)(cid:81)(cid:71)(cid:85)(cid:82)(cid:76)(cid:71)(cid:68)(cid:17)(cid:3)(cid:55)(cid:75)(cid:72)(cid:3)(cid:37)(cid:76)(cid:74)(cid:3)(cid:49)(cid:72)(cid:85)(cid:71)(cid:3)(cid:53)(cid:68)(cid:81)(cid:70)(cid:75)(cid:3)(cid:42)(cid:88)(cid:76)(cid:71)(cid:72) (cid:28) (cid:27) (cid:58)(cid:92)(cid:285)(cid:90)(cid:76)(cid:72)(cid:87)(cid:79)(cid:68)(cid:81)(cid:76)(cid:72)(cid:3)(cid:79)(cid:76)(cid:86)(cid:87)(cid:3)(cid:90)(cid:3)(cid:90)(cid:76)(cid:71)(cid:82)(cid:78)(cid:88)(cid:3)(cid:53)(cid:72)(cid:70)(cid:92)(cid:70)(cid:79)(cid:72)(cid:85)(cid:57)(cid:76)(cid:72)(cid:90)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:20)(cid:27)(cid:26) Aktualizacja warstwy modelu aplikacji CriminalIntent ................................................................188 Wzorzec Singleton i scentralizowane przechowywanie danych ...........................................189 Abstrakcyjna aktywność do przechowywania fragmentów ..........................................................191 Ogólny układ przechowujący fragmenty..................................................................................191 Abstrakcyjna klasa Activity.........................................................................................................192 Klasy RecyclerView, Adapter oraz ViewHolder .............................................................................197 Klasy ViewHolder i Adapter.......................................................................................................198 Adaptery ........................................................................................................................................199 Zastosowanie kontenera RecyclerView.....................................................................................201 Widok do wyświetlenia ...............................................................................................................202 Implementowanie klas ViewHolder i Adapter ........................................................................203 Dowiązywanie elementów listy .........................................................................................................206 Reagowanie na naciśnięcie.................................................................................................................208 Dla dociekliwych: kontenery ListView i GridView........................................................................209 Dla dociekliwych: singletony.............................................................................................................210 Wyzwanie: typy widoków kontenera RecyclerView ......................................................................211 (cid:55)(cid:90)(cid:82)(cid:85)(cid:93)(cid:72)(cid:81)(cid:76)(cid:72)(cid:3)(cid:76)(cid:81)(cid:87)(cid:72)(cid:85)(cid:73)(cid:72)(cid:77)(cid:86)(cid:181)(cid:90)(cid:3)(cid:88)(cid:318)(cid:92)(cid:87)(cid:78)(cid:82)(cid:90)(cid:81)(cid:76)(cid:78)(cid:68)(cid:3)(cid:93)(cid:3)(cid:88)(cid:78)(cid:260)(cid:68)(cid:71)(cid:68)(cid:80)(cid:76)(cid:3)(cid:76)(cid:3)(cid:90)(cid:76)(cid:71)(cid:74)(cid:72)(cid:87)(cid:68)(cid:80)(cid:76)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:21)(cid:20)(cid:22) Korzystanie z graficznego narzędzia tworzenia układów..............................................................214 Wprowadzenie do dynamicznych układów interfejsu — ConstraintLayout.............................215 Korzystanie z układu ConstraintLayout ...................................................................................216 Edytor graficzny............................................................................................................................217 Tworzenie miejsca dla widoków ................................................................................................218 Dodawanie widgetów...................................................................................................................221 Wewnętrzne ustawienia układu ConstraintLayout.................................................................224 Edytowanie właściwości ..............................................................................................................225 Tworzenie dynamicznych elementów listy ..............................................................................228 Jeszcze kilka słów o atrybutach układu ............................................................................................229 Gęstość pikseli ekranu i jednostki dp oraz sp...........................................................................229 Marginesy i odstępy .....................................................................................................................231 Style, motywy i atrybuty motywów............................................................................................232 Wytyczne dla deweloperów aplikacji dla systemu Android ..................................................233 Graficzne narzędzia do tworzenia układów ....................................................................................233 Wyzwanie: formatowanie daty..........................................................................................................233 (cid:20)(cid:19) (cid:61)(cid:68)(cid:86)(cid:87)(cid:82)(cid:86)(cid:82)(cid:90)(cid:68)(cid:81)(cid:76)(cid:72)(cid:3)(cid:68)(cid:85)(cid:74)(cid:88)(cid:80)(cid:72)(cid:81)(cid:87)(cid:181)(cid:90)(cid:3)(cid:73)(cid:85)(cid:68)(cid:74)(cid:80)(cid:72)(cid:81)(cid:87)(cid:181)(cid:90)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:21)(cid:22)(cid:24) Uruchamianie aktywności przez fragment......................................................................................235 Dodawanie danych extras ...........................................................................................................237 Pobieranie danych extras ............................................................................................................237 Wypełnianie widoku fragmentu CrimeFragment danymi z obiektu Crime.......................238 Wady bezpośredniego pobierania danych................................................................................239 Argumenty fragmentu........................................................................................................................240 Przypisywanie argumentów do fragmentu...............................................................................240 Pobieranie argumentów ..............................................................................................................241 (cid:27) Poleć książkęKup książkę (cid:54)(cid:83)(cid:76)(cid:86)(cid:3)(cid:87)(cid:85)(cid:72)(cid:285)(cid:70)(cid:76) Przeładowywanie listy.........................................................................................................................242 Pobieranie wyników działania fragmentów ....................................................................................244 Dla dociekliwych: dlaczego używamy argumentów fragmentów?...............................................245 Wyzwanie: efektywne przeładowywanie zawartości kontenera RecyclerView..........................246 Wyzwanie: ulepszanie wydajności działania obiektu CrimeLab..................................................246 (cid:20)(cid:20) (cid:61)(cid:68)(cid:86)(cid:87)(cid:82)(cid:86)(cid:82)(cid:90)(cid:68)(cid:81)(cid:76)(cid:72)(cid:3)(cid:78)(cid:79)(cid:68)(cid:86)(cid:92)(cid:3)(cid:57)(cid:76)(cid:72)(cid:90)(cid:51)(cid:68)(cid:74)(cid:72)(cid:85) (cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:21)(cid:23)(cid:26) Tworzenie klasy CrimePagerActivity...............................................................................................248 Obiekty ViewPager i PagerAdapter...........................................................................................249 Integrowanie aktywności CrimePagerActivity ........................................................................251 FragmentStatePagerAdapter kontra FragmentPagerAdapter ......................................................253 Dla dociekliwych: jak naprawdę działa ViewPager........................................................................255 Dla dociekliwych: rozmieszczanie widoków z poziomu kodu .....................................................256 Wyzwanie: odtwarzanie marginesów fragmentu CrimeFragment..............................................257 Wyzwanie: dodawanie przycisków Pierwsza i Ostatnia ................................................................257 (cid:20)(cid:21) (cid:50)(cid:78)(cid:81)(cid:68)(cid:3)(cid:71)(cid:76)(cid:68)(cid:79)(cid:82)(cid:74)(cid:82)(cid:90)(cid:72) (cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:21)(cid:24)(cid:28) Tworzenie instancji klasy DialogFragment.....................................................................................261 Wyświetlanie fragmentu DialogFragment ...............................................................................263 Dodawanie zawartości okna dialogowego................................................................................265 Przekazywanie danych między fragmentami..................................................................................267 Przekazywanie danych do fragmentu DatePickerFragment..................................................268 Zwracanie danych do fragmentu CrimeFragment..................................................................270 Wyzwanie: więcej okien dialogowych..............................................................................................278 Wyzwanie: bardziej responsywny DialogFragment.......................................................................278 (cid:20)(cid:22) (cid:51)(cid:68)(cid:86)(cid:72)(cid:78)(cid:3)(cid:81)(cid:68)(cid:85)(cid:93)(cid:219)(cid:71)(cid:93)(cid:76)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:21)(cid:26)(cid:28) Biblioteka AppCompat.......................................................................................................................280 Używanie biblioteki AppCompat ..............................................................................................280 Menu .....................................................................................................................................................282 Definiowanie menu w kodzie XML...........................................................................................282 Tworzenie menu...........................................................................................................................288 Reagowanie na wybranie elementu menu ................................................................................291 Włączanie nawigacji hierarchicznej .................................................................................................292 Jak działa nawigacja hierarchiczna ............................................................................................293 Alternatywny przycisk akcji...............................................................................................................294 Przełączanie tytułu przycisku akcji............................................................................................295 „Jeszcze tylko jedna sprawa…” ..................................................................................................297 Dla dociekliwych: pasek akcji a pasek narzędzi ..............................................................................299 Wyzwanie: usuwanie przestępstw z listy..........................................................................................300 Wyzwanie: zasoby tekstowe typu plural ..........................................................................................300 Wyzwanie: pusty widok dla kontenera RecyclerView ...................................................................300 (cid:20)(cid:23) (cid:37)(cid:68)(cid:93)(cid:92)(cid:3)(cid:71)(cid:68)(cid:81)(cid:92)(cid:70)(cid:75)(cid:3)(cid:54)(cid:52)(cid:47)(cid:76)(cid:87)(cid:72)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:22)(cid:19)(cid:20) Definiowanie schematu......................................................................................................................302 Tworzenie szkieletu bazy danych......................................................................................................303 Eksploracja plików przy użyciu Android Device Monitor.....................................................306 Debugowanie problemów z bazą danych .................................................................................307 (cid:28) Poleć książkęKup książkę (cid:51)(cid:85)(cid:82)(cid:74)(cid:85)(cid:68)(cid:80)(cid:82)(cid:90)(cid:68)(cid:81)(cid:76)(cid:72)(cid:3)(cid:68)(cid:83)(cid:79)(cid:76)(cid:78)(cid:68)(cid:70)(cid:77)(cid:76)(cid:3)(cid:71)(cid:79)(cid:68)(cid:3)(cid:36)(cid:81)(cid:71)(cid:85)(cid:82)(cid:76)(cid:71)(cid:68)(cid:17)(cid:3)(cid:55)(cid:75)(cid:72)(cid:3)(cid:37)(cid:76)(cid:74)(cid:3)(cid:49)(cid:72)(cid:85)(cid:71)(cid:3)(cid:53)(cid:68)(cid:81)(cid:70)(cid:75)(cid:3)(cid:42)(cid:88)(cid:76)(cid:71)(cid:72) Patroszymy CrimeLab ........................................................................................................................308 Zapisywanie danych w bazie..............................................................................................................310 Zastosowanie klasy ContentValues ...........................................................................................310 Wstawianie i aktualizowanie wierszy tabeli .............................................................................311 Odczytywanie danych z bazy.............................................................................................................313 Zastosowanie klasy CursorWrapper .........................................................................................314 Zamiana na obiekty modelu .......................................................................................................316 Dla dociekliwych: więcej baz danych ...............................................................................................319 Dla dociekliwych: kontekst aplikacji ................................................................................................320 Wyzwanie: usuwanie przestępstw z listy..........................................................................................320 (cid:20)(cid:24) (cid:44)(cid:81)(cid:87)(cid:72)(cid:81)(cid:70)(cid:77)(cid:72)(cid:3)(cid:81)(cid:76)(cid:72)(cid:77)(cid:68)(cid:90)(cid:81)(cid:72)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:22)(cid:21)(cid:20) Dodawanie przycisków.......................................................................................................................322 Dodawanie podejrzanego do warstwy modelu...............................................................................323 Zastosowanie ciągów formatujących................................................................................................325 Zastosowanie niejawnych intencji ....................................................................................................326 Elementy składowe niejawnej intencji ......................................................................................327 Wysyłanie raportu o przestępstwie............................................................................................328 Korzystanie z listy kontaktów.....................................................................................................330 Wyszukiwanie aktywności zdolnych do wykonania danego zadania...................................334 Wyzwanie: klasa ShareCompat .........................................................................................................337 Wyzwanie: kolejna intencja niejawna ..............................................................................................337 (cid:20)(cid:25) (cid:58)(cid:92)(cid:78)(cid:82)(cid:81)(cid:92)(cid:90)(cid:68)(cid:81)(cid:76)(cid:72)(cid:3)(cid:93)(cid:71)(cid:77)(cid:219)(cid:201)(cid:3)(cid:83)(cid:85)(cid:93)(cid:92)(cid:3)(cid:88)(cid:318)(cid:92)(cid:70)(cid:76)(cid:88)(cid:3)(cid:76)(cid:81)(cid:87)(cid:72)(cid:81)(cid:70)(cid:77)(cid:76)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:22)(cid:22)(cid:28) Miejsce do przechowywania zdjęć ....................................................................................................339 Miejsce na przechowywanie plików .................................................................................................342 Zastosowanie klasy FileProvider................................................................................................343 Określanie lokalizacji zdjęć.........................................................................................................344 Zastosowanie intencji do uruchomienia aparatu fotograficznego...............................................345 Uruchamianie intencji.................................................................................................................346 Skalowanie i wyświetlanie bitmap ....................................................................................................348 Deklarowanie wymagań aplikacji .....................................................................................................351 Wyzwanie: wyświetlanie zdjęcia w pełnym rozmiarze ..................................................................351 Wyzwanie: efektywne ładowanie miniaturek zdjęć .......................................................................351 (cid:20)(cid:26) (cid:39)(cid:90)(cid:88)(cid:83)(cid:68)(cid:81)(cid:72)(cid:79)(cid:82)(cid:90)(cid:92)(cid:3)(cid:76)(cid:81)(cid:87)(cid:72)(cid:85)(cid:73)(cid:72)(cid:77)(cid:86)(cid:3)(cid:87)(cid:92)(cid:83)(cid:88)(cid:3)(cid:79)(cid:76)(cid:86)(cid:87)(cid:68)(cid:16)(cid:86)(cid:93)(cid:70)(cid:93)(cid:72)(cid:74)(cid:181)(cid:260)(cid:92) (cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:22)(cid:24)(cid:22) Dodawanie elastyczności do układu.................................................................................................354 Modyfikowanie klasy SingleFragmentActivity ........................................................................355 Tworzenie układu z dwoma kontenerami dla fragmentów ...................................................356 Używanie aliasów zasobów .........................................................................................................358 Tworzenie alternatywy dla tabletów..........................................................................................359 Aktywność: nadzorca fragmentów ...................................................................................................360 Interfejsy zwrotne układów ........................................................................................................361 Dla dociekliwych: jeszcze kilka słów o sprawdzaniu rozmiarów ekranu urządzenia................369 Wyzwanie: dodawanie funkcji „przeciągnij, aby usunąć”.............................................................370 (cid:20)(cid:19) Poleć książkęKup książkę (cid:54)(cid:83)(cid:76)(cid:86)(cid:3)(cid:87)(cid:85)(cid:72)(cid:285)(cid:70)(cid:76) (cid:20)(cid:27) (cid:47)(cid:82)(cid:78)(cid:68)(cid:79)(cid:76)(cid:93)(cid:68)(cid:70)(cid:77)(cid:68)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:22)(cid:26)(cid:20) Lokalizacja zasobów............................................................................................................................372 Zasoby domyślne..........................................................................................................................375 Sprawdzanie pokrycia zasobów przy użyciu edytora tłumaczeń Translations Editor.......378 Dostosowywanie ustawień regionalnych..................................................................................379 Kwalifikatory konfiguracji .................................................................................................................382 Priorytetyzacja zasobów alternatywnych..................................................................................383 Wiele kwalifikatorów...................................................................................................................385 Odszukiwanie zasobów najlepiej dopasowanych do bieżącej konfiguracji .........................386 Testowanie zasobów alternatywnych ...............................................................................................387 Wyzwanie: lokalizacja dat ..................................................................................................................388 (cid:20)(cid:28) (cid:56)(cid:260)(cid:68)(cid:87)(cid:90)(cid:76)(cid:72)(cid:81)(cid:76)(cid:68)(cid:3)(cid:71)(cid:82)(cid:86)(cid:87)(cid:219)(cid:83)(cid:88) (cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:22)(cid:27)(cid:28) Usługa TalkBack..................................................................................................................................389 Eksploracja przez dotyk...............................................................................................................392 Nawigacja liniowa poprzez przeciąganie palcem po ekranie.................................................393 Jak spowodować, aby TalkBack odczytywał elementy nietekstowe?...........................................395 Dodawanie opisów zawartości ...................................................................................................395 Włączanie możliwości ustawienia fokusu dla wybranego widoku .......................................397 Jak zapewnić zbliżoną funkcjonalność aplikacji z ułatwieniami dostępu...................................398 Zastosowanie etykiet do udostępniania kontekstu..................................................................400 Dla dociekliwych: korzystanie z aplikacji Accessibility Scanner..................................................403 Wyzwanie: poprawianie listy.............................................................................................................406 Wyzwanie: dostarczanie kontekstu dla elementu danych.............................................................406 Wyzwanie: powiadomienia o zdarzeniach ......................................................................................406 (cid:21)(cid:19) (cid:58)(cid:76)(cid:199)(cid:93)(cid:68)(cid:81)(cid:76)(cid:72)(cid:3)(cid:71)(cid:68)(cid:81)(cid:92)(cid:70)(cid:75)(cid:3)(cid:76)(cid:3)(cid:80)(cid:82)(cid:71)(cid:72)(cid:79)(cid:3)(cid:48)(cid:57)(cid:57)(cid:48)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:23)(cid:19)(cid:28) Różne architektury — dlaczego warto sobie tym zaprzątać głowę ..............................................409 Tworzenie aplikacji BeatBox..............................................................................................................411 Proste wiązanie danych ...............................................................................................................412 Importowanie zasobów typu assets ..................................................................................................416 Pobieranie zasobów assets..................................................................................................................418 Podłączanie zasobów typu asset........................................................................................................420 Wiązanie do danych............................................................................................................................423 Tworzenie modelu widoku .........................................................................................................424 Wiązanie do modelu widoku......................................................................................................425 Observable data ............................................................................................................................428 Korzystanie z zasobów typu asset .....................................................................................................430 Dla dociekliwych: jeszcze kilka słów o wiązaniu danych...............................................................431 Wyrażenia lambda........................................................................................................................431 Jeszcze więcej cukru syntaktycznego.........................................................................................431 BindingAdapter ............................................................................................................................432 Dla dociekliwych: dlaczego zasoby typu asset, a nie zwykłe zasoby aplikacji?...........................432 Dla dociekliwych: zasoby typu non-asset?.......................................................................................433 (cid:20)(cid:20) Poleć książkęKup książkę (cid:51)(cid:85)(cid:82)(cid:74)(cid:85)(cid:68)(cid:80)(cid:82)(cid:90)(cid:68)(cid:81)(cid:76)(cid:72)(cid:3)(cid:68)(cid:83)(cid:79)(cid:76)(cid:78)(cid:68)(cid:70)(cid:77)(cid:76)(cid:3)(cid:71)(cid:79)(cid:68)(cid:3)(cid:36)(cid:81)(cid:71)(cid:85)(cid:82)(cid:76)(cid:71)(cid:68)(cid:17)(cid:3)(cid:55)(cid:75)(cid:72)(cid:3)(cid:37)(cid:76)(cid:74)(cid:3)(cid:49)(cid:72)(cid:85)(cid:71)(cid:3)(cid:53)(cid:68)(cid:81)(cid:70)(cid:75)(cid:3)(cid:42)(cid:88)(cid:76)(cid:71)(cid:72) (cid:21)(cid:20) (cid:55)(cid:72)(cid:86)(cid:87)(cid:92)(cid:3)(cid:77)(cid:72)(cid:71)(cid:81)(cid:82)(cid:86)(cid:87)(cid:78)(cid:82)(cid:90)(cid:72)(cid:3)(cid:76)(cid:3)(cid:82)(cid:71)(cid:87)(cid:90)(cid:68)(cid:85)(cid:93)(cid:68)(cid:81)(cid:76)(cid:72)(cid:3)(cid:83)(cid:79)(cid:76)(cid:78)(cid:181)(cid:90)(cid:3)(cid:68)(cid:88)(cid:71)(cid:76)(cid:82) (cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:23)(cid:22)(cid:24) Tworzenie klasy SoundPool...............................................................................................................435 Ładowanie plików dźwiękowych ......................................................................................................436 Odtwarzanie plików dźwiękowych...................................................................................................438 Zależności testów.................................................................................................................................439 Tworzenie klasy testowej....................................................................................................................440 Konfigurowanie testu .........................................................................................................................442 Zastosowanie zależności pozornych..........................................................................................443 Pisanie testów.......................................................................................................................................444 Testowanie interakcji obiektów..................................................................................................445 Wywołania zwrotne wiązania danych..............................................................................................448 Usuwanie plików dźwięków z pamięci.............................................................................................449 Zmiana orientacji urządzenia a ciągłość istnienia obiektów.........................................................450 Zachowywanie fragmentów........................................................................................................451 Obracanie urządzenia a zachowywanie fragmentów..............................................................452 Dla dociekliwych: czy zachowywać fragmenty?..............................................................................453 Dla dociekliwych: Espresso i testy integracyjne..............................................................................455 Dla dociekliwych: obiekty pozorne i testowanie.............................................................................456 Wyzwanie: sterowanie szybkością odtwarzania .............................................................................457 (cid:21)(cid:21) (cid:54)(cid:87)(cid:92)(cid:79)(cid:72)(cid:3)(cid:76)(cid:3)(cid:80)(cid:82)(cid:87)(cid:92)(cid:90)(cid:92) (cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:23)(cid:24)(cid:28) Zasoby kolorów ...................................................................................................................................460 Style .......................................................................................................................................................460 Dziedziczenie stylów....................................................................................................................462 Motywy aplikacji .................................................................................................................................463 Modyfikowanie motywu .............................................................................................................464 Dodawanie kolorów motywu ............................................................................................................466 Nadpisywanie atrybutów motywu....................................................................................................467 Eksplorowanie motywu...............................................................................................................468 Modyfikowanie atrybutów przycisków............................................................................................471 Dla dociekliwych: jeszcze kilka słów o dziedziczeniu stylów........................................................474 Dla dociekliwych: dostęp do atrybutów motywu ...........................................................................475 (cid:21)(cid:22) (cid:40)(cid:79)(cid:72)(cid:80)(cid:72)(cid:81)(cid:87)(cid:92)(cid:3)(cid:59)(cid:48)(cid:47)(cid:3)(cid:71)(cid:85)(cid:68)(cid:90)(cid:68)(cid:69)(cid:79)(cid:72) (cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:23)(cid:26)(cid:26) Tworzenie przycisków o jednolitym wyglądzie ..............................................................................478 Elementy typu shape drawable..........................................................................................................479 Lista stanów..........................................................................................................................................481 Lista warstw..........................................................................................................................................482 Dla bardziej dociekliwych: po co zawracać sobie głowę elementami XML drawable?.............483 Dla bardziej dociekliwych: obrazy Mipmap....................................................................................484 Dla dociekliwych: obrazy 9-patch.....................................................................................................485 Wyzwanie: motywy przycisków........................................................................................................492 (cid:21)(cid:23) (cid:58)(cid:76)(cid:219)(cid:70)(cid:72)(cid:77)(cid:3)(cid:82)(cid:3)(cid:76)(cid:81)(cid:87)(cid:72)(cid:81)(cid:70)(cid:77)(cid:68)(cid:70)(cid:75)(cid:3)(cid:76)(cid:3)(cid:93)(cid:68)(cid:71)(cid:68)(cid:81)(cid:76)(cid:68)(cid:70)(cid:75) (cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:17)(cid:23)(cid:28)(cid:22) Tworzenie aplikacji NerdLauncher ..................................................................................................494 Rozwiązywanie intencji niejawnych.................................................................................................496 Tworzenie jawnych intencji w czasie działania programu............................................................500 (cid:20)(cid:21) Poleć książkęKup książkę (cid:54)(cid:83)(cid:76)(cid:86)(cid:3)(cid:87)(cid:85)(cid:72)(cid:285)(cid:70)(cid:76) Zadania i stos aktywności...................................................................................................................502 Przełączanie między zadaniami..................................................................................................503 Uruchamianie nowego zadania..................................................................................................504 Użycie launchera NerdLauncher jako ekranu głównego ..............................................................507 Wyzwanie: ikony .................................................................................................................................507 Dla dociekliwych: procesy kontra zadania ...................................................................................
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Programowanie aplikacji dla Androida. The Big Nerd Ranch Guide. Wydanie III
Autor:
, ,

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: