Programowanie aplikacji dla Androida. The Big Nerd Ranch Guide. Wydanie III (ebook)(audiobook)(audiobook)
- Autorzy:
- Bill Phillips, Chris Stewart, Kristin Marsicano
- Promocja Przejdź
- Wydawnictwo:
- Helion
- Wydawnictwo:
- Helion
- Ocena:
- 5.0/6 Opinie: 1
- Stron:
- 744
- Druk:
- oprawa miękka
- 3w1 w pakiecie:
-
PDFePubMobi
Opis książki
Czytaj fragment
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:
- środowisko pracy i zasady projektowania aplikacji,
- obsługa wbudowanego aparatu fotograficznego i dotykowości,
- architektura MVVM i mechanizmy wiązania danych,
- testowanie aplikacji,
- animacje w Androidzie,
- usługa lokalizacji i korzystanie z map.
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.
Podobne produkty
-
Zwinne wytwarzanie oprogramowania. Najlepsze za...
Robert C. Martin
-
Zaawansowane modele finansowe z wykorzystaniem ...
Mary Jackson, Mike Staunton
-
Bitcoin dla zaawansowanych. Programowanie z uży...
Andreas M. Antonopoulos
-
Python. Uczenie maszynowe
Sebastian Raschka
-
Android Studio. Podstawy
Belen Cruz Zapata
-
Android Studio. Tworzenie aplikacji mobilnych
Marcin Płonkowski
Podobne produkty
-
Sprawne zarządzanie projektami metodą Scrum
Ken Schwaber
-
Access. Analiza danych. Receptury
Ken Bluttman, Wayne Freeze
-
Czysty kod. Podręcznik dobrego programisty
Robert C. Martin
-
Wzorce projektowe. Elementy oprogramowania obie...
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
-
Android. Programowanie aplikacji. Rusz głową!
Dawn Griffiths, David Griffiths
-
Android Studio. Tworzenie aplikacji mobilnych
Marcin Płonkowski
Szczegóły książki
- Tytuł oryginału:
- Android Programming: The Big Nerd Ranch Guide (3rd Edition) (Big Nerd Ranch Guides)
- Tłumaczenie:
- Grzegorz Kowalczyk
- ISBN Książki drukowanej:
- 978-83-283-3636-0, 9788328336360
- Data wydania książki drukowanej:
- 2017-11-17
- ISBN Ebooka:
- 978-83-283-3637-7, 9788328336377
- Data wydania ebooka:
- 2017-11-17
- Format:
- 170x230
- Numer z katalogu:
- 65028
- Rozmiar pliku Pdf:
- 29.7MB
- Rozmiar pliku ePub:
- 27.7MB
- Rozmiar pliku Mobi:
- 27.7MB
- Pobierz przykładowy rozdział PDF
- Przykłady na ftp
Spis treści
- 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)
- Pobieranie i instalowanie Android Studio (25)
- Pobieranie starszych wersji środowiska SDK (25)
- Urządzenie sprzętowe (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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- Tworzenie aplikacji NerdLauncher (494)
- Rozwiązywanie intencji niejawnych (496)
- Tworzenie jawnych intencji w czasie działania programu (500)
- 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 (508)
- Dla dociekliwych: dokumenty równoległe (511)
- Tworzymy aplikację PhotoGallery (517)
- Podstawowe zagadnienia sieciowe (519)
- Uzyskiwanie uprawnień do korzystania z połączeń sieciowych (521)
- Uruchamianie zadań asynchronicznych AsyncTask w wątku tła (521)
- Ty i Twój wątek główny (523)
- Poza głównym wątkiem (524)
- Pobieranie danych w formacie JSON z serwisu Flickr (525)
- Parsowanie danych zapisanych w formacie JSON (529)
- Od zadania AsyncTask z powrotem do wątku głównego (532)
- Porządkowanie zadań asynchronicznych AsyncTask (535)
- Dla dociekliwych: jeszcze kilka słów o zadaniach AsyncTask (536)
- Dla dociekliwych: alternatywy dla zadań AsyncTask (537)
- Wyzwanie: Gson (538)
- Wyzwanie: podział na strony (538)
- Wyzwanie: dynamiczne modyfikowanie liczby wyświetlanych kolumn (539)
- Przygotowanie kontenera RecyclerView do wyświetlania obrazów (541)
- Pobieranie wielu małych rzeczy (544)
- Komunikacja z wątkiem głównym (544)
- Tworzenie wątku tła (546)
- Komunikaty i handlery komunikatów (548)
- Anatomia komunikatu (548)
- Anatomia handlera (549)
- Używanie handlerów (549)
- Przekazywanie handlerów (554)
- Dla dociekliwych: zadania AsyncTask kontra wątki (559)
- Dla dociekliwych: rozwiązywanie problemu z pobieraniem zdjęć (560)
- Dla dociekliwych: tryb StrictMode (561)
- Wyzwanie: ładowanie wstępne i buforowanie danych (562)
- Wyszukiwanie zdjęć w serwisie Flickr (564)
- Zastosowanie widoku SearchView (568)
- Reagowanie na interakcję widoku SearchView z użytkownikiem (571)
- Proste zachowywanie danych w plikach preferencji (573)
- Wygładzanie aplikacji (577)
- Wyzwanie: jeszcze bardziej ulepszamy aplikację (578)
- Tworzenie usługi IntentService (579)
- Do czego służą usługi (582)
- Operacje sieciowe bezpiecznie działające w tle (582)
- Sprawdzanie, czy pojawiły się nowe wyniki wyszukiwania (584)
- Opóźnione wykonywanie z wykorzystaniem usługi AlarmManager (585)
- Jak używać alarmów we właściwy sposób (588)
- Obiekty PendingIntent (589)
- Zarządzanie alarmami przy użyciu PendingIntent (590)
- Sterowanie alarmami (590)
- Powiadomienia (593)
- Wyzwanie: powiadomienia na urządzeniach typu Android Wear (595)
- Dla dociekliwych: szczegóły usługi (596)
- Czym zajmują się usługi (a czego nie powinny robić) (596)
- Cykl życia usługi (596)
- Usługi typu non-sticky (597)
- Usługi typu sticky (597)
- Wiązanie usług (598)
- Dla dociekliwych: klasy JobScheduler oraz JobServices (599)
- JobScheduler i przyszłość zadań drugoplanowych (602)
- Wyzwanie: zastosowanie klasy JobService w systemie Lollipop (603)
- Dla bardziej dociekliwych: adaptery synchronizacji (603)
- Intencje a intencje rozgłoszeń (605)
- Odbieranie rozgłoszeń systemowych - aktywowanie podczas uruchamiania systemu (606)
- Tworzenie i rejestrowanie samodzielnego odbiornika rozgłoszeń (606)
- Używanie odbiorników rozgłoszeń (609)
- Filtrowanie powiadomień pierwszoplanowych (611)
- Wysyłanie intencji rozgłoszenia (611)
- Tworzenie i rejestrowanie odbiornika dynamicznego (612)
- Ograniczanie zasięgu rozgłoszeń tylko do naszej aplikacji przy użyciu prywatnych uprawnień (614)
- Przekazywanie i odbieranie danych przy użyciu rozgłoszeń uporządkowanych (617)
- Odbiorniki i zadania działające przez długi czas (622)
- Dla dociekliwych: zdarzenia lokalne (622)
- Używanie biblioteki EventBus (623)
- Używanie biblioteki RxJava (624)
- Dla dociekliwych: sprawdzanie, czy fragment jest widzialny (624)
- Ostatni kawałek danych z serwisu Flickr (628)
- Prosty sposób - intencje niejawne (630)
- Trudniejszy sposób - widok WebView (631)
- Zastosowanie interfejsu WebChromeClient do ulepszenia wyświetlania stron internetowych (635)
- Zmiana orientacji urządzenia a widok WebView (638)
- Niebezpieczeństwa związane z obsługą zmian konfiguracji (639)
- Dla dociekliwych: wstrzykiwanie obiektów JavaScript (639)
- Dla dociekliwych: aktualizacje widoku WebView (640)
- Wyzwanie: używanie przycisku Wstecz do obsługi historii przeglądania (641)
- Wyzwanie: obsługa łączy innych niż HTTP (641)
- Konfigurowanie projektu aplikacji DragAndDraw (644)
- Tworzenie własnego, niestandardowego widoku (645)
- Tworzenie widoku BoxDrawingView (646)
- Obsługa zdarzeń związanych z dotykiem (648)
- Śledzenie zdarzeń związanych z ruchem palca po ekranie (649)
- Renderowanie z użyciem metody onDraw(Canvas) (652)
- Wyzwanie: zapisywanie stanu (653)
- Wyzwanie: obracanie prostokątów (654)
- Budowanie sceny (657)
- Proste animacje (659)
- Właściwości transformacji widoków (663)
- Używanie różnych interpolatorów (665)
- Modyfikowanie kolorów (665)
- Uruchamianie kilku animatorów jednocześnie (668)
- Dla dociekliwych: inne API animacji (669)
- Starsze narzędzia animacyjne (669)
- Transformacje (669)
- Wyzwania (670)
- Lokalizacja i biblioteki (672)
- Usługi Google Play (672)
- Tworzenie aplikacji Locatr (673)
- Google Play Services a testowanie usług lokalizacji w emulatorze (673)
- Symulowane dane lokalizacji (675)
- Budowanie aplikacji (677)
- Konfigurowanie Google Play Services (680)
- Uprawnienia do wyznaczania lokalizacji (681)
- Używanie Google Play Services (682)
- Wyszukiwanie zdjęć w serwisie Flickr z użyciem geolokalizacji (684)
- Pobieranie informacji o bieżącej lokalizacji (685)
- Żądanie udzielenia uprawnień po uruchomieniu aplikacji (688)
- Sprawdzanie uprawnień (688)
- Wyszukiwanie i wyświetlanie zdjęć z użyciem geolokalizacji (693)
- Wyzwanie: uzasadnianie prośby o udzielenie uprawnień (695)
- Wyzwanie: wskaźnik postępu wyszukiwania (696)
- Importowanie biblioteki Play Services Maps (697)
- Korzystanie z map w systemie Android (697)
- Pobieranie klucza Maps API dla map Google (698)
- Konfigurowanie map (700)
- Pobieranie dodatkowych danych o lokalizacji (701)
- Praca z mapą (704)
- Rysowanie na mapie (707)
- Dla dociekliwych: zespoły programistów i klucze API (708)
- Warstwy materiałów (712)
- Elewacja i wartości osi Z (713)
- Animatory listy stanów (715)
- Narzędzia animacji (717)
- Animacje typu circular reveal (717)
- Transformacje współdzielonego elementu (719)
- Komponenty widoków (722)
- Karty (722)
- Przyciski FAB (724)
- Powiadomienia Snackbar (725)
- Jeszcze kilka słów o interfejsie Material Design (727)
- Wyzwanie finałowe (729)
- Trochę bezwstydnej prywaty (730)
- Dziękujemy! (730)
Poznawanie systemu Android (19)
Niezbędne narzędzia (25)
1. Twoja pierwsza aplikacja dla systemu Android (27)
2. System Android i wzorzec MVC (59)
3. Cykl życia aktywności (81)
4. Debugowanie aplikacji dla systemu Android (103)
5. Twoja druga aktywność (119)
6. Wersje Android SDK i kompatybilność aplikacji (143)
7. Fragmenty w interfejsie użytkownika i menedżer fragmentów (155)
8. Wyświetlanie list w widoku RecyclerView (187)
9. Tworzenie interfejsów użytkownika z układami i widgetami (213)
10. Zastosowanie argumentów fragmentów (235)
11. Zastosowanie klasy ViewPager (247)
12. Okna dialogowe (259)
13. Pasek narzędzi (279)
14. Bazy danych SQLite (301)
15. Intencje niejawne (321)
16. Wykonywanie zdjęć przy użyciu intencji (339)
17. Dwupanelowy interfejs typu lista-szczegóły (353)
18. Lokalizacja (371)
19. Ułatwienia dostępu (389)
20. Wiązanie danych i model MVVM (409)
21. Testy jednostkowe i odtwarzanie plików audio (435)
22. Style i motywy (459)
23. Elementy XML drawable (477)
24. Więcej o intencjach i zadaniach (493)
25. HTTP i zadania drugoplanowe (515)
26. Obiekty Looper, Handler i HandlerThread (541)
27. Wyszukiwanie (563)
28. Usługi działające w tle (579)
29. Intencje rozgłoszeń (605)
30. Przeglądanie sieci WWW i widoki WebView (627)
31. Widoki niestandardowe i zdarzenia związane z dotykiem (643)
32. Animacja właściwości (657)
33. Lokalizacja i usługi Play (671)
34. Mapy (697)
35. Interfejs Material Design (711)
36. Posłowie (729)
Skorowidz (731)
Oceny i opinie klientów (1)
Dodaj opinię5 oceniona przez: średnio zaawansowany, 2018-03-13