Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00251 005515 13610927 na godz. na dobę w sumie
Android UI. Podręcznik dla projektantów. Smashing Magazine - książka
Android UI. Podręcznik dla projektantów. Smashing Magazine - książka
Autor: Liczba stron: 400
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-246-6859-5 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie mobilne >> android
Porównaj ceny (książka, ebook, audiobook).

Klucz do sukcesu Twojej aplikacji!

'Smashing Magazine' to jeden z najpopularniejszych serwisów poświęconych profesjonalnemu tworzeniu stron WWW i interfejsów użytkownika. Korzystają z niego przede wszystkim profesjonalni projektanci i deweloperzy. Ta książka to kompilacja wiedzy najwybitniejszych autorów i ekspertów z zespołu 'Smashing Magazine'. Sięgnij po nią już teraz i uświadom sobie, że nawet najlepsza aplikacja nie sprzeda się, jeżeli nie będzie atrakcyjna wizualnie i łatwa w zastosowaniu. Zanim napiszesz pierwszą linię kodu, warto przygotować prototyp i przetestować go na potencjalnych użytkownikach.

Dzięki lekturze tej książki poznasz struktury aplikacji, mechanizm intencji oraz najlepsze techniki nawigowania wśród dostępnych opcji. Kolejne rozdziały poprowadzą Cię przez szczegóły projektowania komponentów interfejsu, stosowania ikon oraz używania efektów. Część trzecia kompendium poświęcona jest zarządzaniu zasobami Androida, skalowaniu oraz układom interfejsu. Na końcu będziesz miał szansę zapoznać się z najlepszymi wzorcami tworzenia aplikacji na tę platformę. Książka ta jest nieocenionym źródłem informacji na temat tworzenia przyjaznych i wydajnych aplikacji. Musisz ją przeczytać!

Dzięki tej książce:

Nienaganny interfejs użytkownika to warunek konieczny do odniesienia sukcesu!

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

Darmowy fragment publikacji:

Tytuł oryginału: Smashing Android UI: Responsive Android UI and Design Patterns for Phones and Tablets Tłumaczenie: Mikołaj Szczepaniak ISBN: 978-83-246-6859-5 This edition first published 2013 © 2013 John Wiley Sons, Inc. Translation copyright © 2014 by Helion S.A. All Rights Reserved. Authorized translation from the English language edition published by John Wiley Sons Limited. Responsibility for the accuracy of the translation rests solely with Helion S.A. and is not the responsibility of John Wiley Sons Limited. Wiley and the Wiley logo are trademarks or registered trademarks of John Wiley Sons, Inc. and/ or its affiliates in the United States and/or other countries, and may not be used without written permission. All trademarks are the property of their respective owners. John Wiley Sons, Inc. is not associated with any product or vendor mentioned in the book. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher. 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. Wydawnictwo HELION dołożyło wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie bierze jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Wydawnictwo HELION nie ponosi 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) Pliki z przykładami omawianymi w książce można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/andrui.zip Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/andrui Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność Spis treści O autorze Podziękowania autora Wprowadzenie CZĘŚĆ I WPROWADZENIE DO ARCHITEKTURY SYSTEMU ANDROID Rozdział 1. Użyteczność i projekt interfejsu użytkownika — wprowadzenie Technologia kontra projekt interfejsu Zrozumieć model mentalny Projektowanie dla użytkowników Żadna aplikacja nie może robić wszystkiego — wybierz właściwe obszary działania To Ty jesteś ekspertem; użytkownicy nie są projektantami Poznaj swoich użytkowników — projektuj dla prawdziwych ludzi Podsumowanie Rozdział 2. Wstrzymaj się z kodowaniem Budowa prototypów Narzędzia projektowe Testowanie przez użytkowników Podsumowanie Rozdział 3. Specy(cid:23) ka rozwiązań mobilnych i urządzeń z ekranami dotykowymi Projektowanie dla urządzeń mobilnych Projektowanie pod kątem interfejsów dotykowych Podsumowanie Rozdział 4. Wprowadzenie do platformy Android Wyzwania stwarzane przez platformę Android Wersje Androida Dystrybucja aplikacji dla Androida Co oznacza open source? Podsumowanie 9 11 13 17 19 20 21 26 29 30 30 33 35 36 38 42 46 47 48 55 59 61 62 70 73 75 77 Kup książkęPoleć książkę SPIS TREŚCI CZĘŚĆ II Rozdział 5. Rozdział 6. FUNKCJE I KOMPONENTY INTERFEJSU UŻYTKOWNIKA PLATFORMY ANDROID Struktura aplikacji Androida i wskazówki dostępne w internecie Ogólna struktura aplikacji Androida Ogólna struktura projektu Androida Ofi cjalne wskazówki dla Androida Podsumowanie Intencje Androida Intencje umożliwiają aplikacjom wzajemną współpracę Korzystanie z serwisów społecznościowych i udostępnianie zasobów Praca z przeglądarkami Jak działają intencje Androida? Tworzenie własnych akcji Intencje są wszędzie Intencje kontra interfejsy API aplikacji Podsumowanie Rozdział 7. Struktura nawigacji w aplikacjach Androida Komponenty nawigacji w systemie Android, aktywności i intencje Kontrolki nawigacyjne Androida Podsumowanie 4 Rozdział 8. Widgety aplikacji na ekranie domowym Zastosowania widgetów aplikacji ekranu domowego Aktualizowanie danych widgetu aplikacji Układ i funkcje widgetu aplikacji Implementacja widgetu aplikacji Podsumowanie Powiadamianie i informowanie użytkowników Metody powiadamiania użytkownika w systemie Android Kiedy powiadamiać użytkowników Kiedy nie powiadamiać użytkowników Unikanie wyskakujących okien Optymalne wykorzystywanie powiadomień na pasku statusu Podsumowanie Projektowanie obsługi przycisków sprzętowych, metod wprowadzania danych i czujników 79 81 82 86 88 89 91 92 93 95 97 103 104 104 105 107 108 109 121 123 124 128 130 135 137 139 140 143 148 149 150 157 159 160 161 162 170 170 171 Rozdział 9. Rozdział 10. Projektowanie obsługi ekranu dotykowego Projektowanie obsługi przycisków sprzętowych Projektowanie obsługi klawiatury ekranowej Projektowanie obsługi klawiatur sprzętowych Projektowanie obsługi krzyżyków i gładzików Projektowanie obsługi rysika Kup książkęPoleć książkę SPIS TREŚCI Projektowanie głosowego sterowania aplikacją Projektowanie obsługi zewnętrznych klawiatur, myszy i touchpadów Projektowanie obsługi dołączonych inteligentnych akcesoriów Projektowanie obsługi czujników Projektowanie obsługi dodatkowego ekranu Podsumowanie Rozdział 11. Projektowanie komponentów interfejsu użytkownika platformy Stosowanie widgetów interfejsu użytkownika Modyfi kowanie widgetów interfejsu użytkownika Modyfi kowanie typografi i Stosowanie ikon Stosowanie animacji i efektów przejść Podsumowanie CZĘŚĆ III SKALOWALNY PROJEKT ANDROIDA Rozdział 12. Zarządzanie zasobami Androida Stosowanie zasobów Androida Projektowanie zasobów pod kątem gęstości pikseli Projektowanie pod kątem różnych wymiarów ekranu Projektowanie interfejsu pod kątem różnych języków i regionów Projektowanie obsługi kontrolek urządzenia Projektowanie interfejsu dla różnych wersji platformy Projektowanie interfejsu dla różnych trybów pracy urządzeń Podsumowanie Rozdział 13. Układy aplikacji Androida Strategia układu systemu Android Układy defi niowane w plikach XML i w kodzie Menedżery układów Defi niowanie wielkości układu Przewijanie Oś Z, porządek komponentów w ramach układu Dopełnienia i marginesy Importowanie i scalanie plików układu Układy niestandardowe Narzędzia do budowy interfejsu użytkownika dla systemu Android Diagnozowanie układów Podsumowanie Rozdział 14. Skalowalna gra(cid:23) ka Format 9-patch Obiekty drawable defi niowane w plikach XML Rysowanie z poziomu kodu aplikacji Podsumowanie 172 172 174 174 174 175 177 178 189 191 197 203 211 213 215 216 218 223 225 226 226 227 227 229 230 232 232 243 244 245 245 246 247 247 248 249 251 252 257 265 269 5 Kup książkęPoleć książkę SPIS TREŚCI Rozdział 15. Skalowalność to nie wszystko — samodostosowujący się projekt Platforma Android to nie tylko telefony Samodostosowujący się projekt Typowe sposoby tworzenia samodostosowujących się interfejsów użytkownika Podsumowanie Rozdział 16. Implementowanie samodostosowujących się interfejsów użytkownika Wprowadzenie do fragmentów Architektura fragmentów i aktywności Migracja istniejących aplikacji Analiza przykładowej aplikacji Podsumowanie 271 272 274 285 288 289 290 292 294 296 309 6 CZĘŚĆ IV WZORCE PROJEKTOWE INTERFEJSU Rozdział 17. Wprowadzenie do wzorców projektowych interfejsu użytkownika UŻYTKOWNIKA W SYSTEMIE ANDROID 311 313 314 Wzorce projektowe interfejsu użytkownika Zalety stosowania wzorców projektowych interfejsu użytkownika 315 Wzorce projektowe we wskazówkach projektowych platformy Android 316 Wzorce projektowe interfejsu użytkownika prezentowane w tej książce 317 319 Podsumowanie Rozdział 18. Wzorce projektowe akcji użytkownika Stosowanie wzorca Action Bar Stosowanie wzorca projektowego Quick Actions Stosowanie wzorca projektowego szufl ady akcji Stosowanie wzorca projektowego Pull-to-Refresh Stosowanie gestu Swipe-to-Dismiss Podsumowanie Rozdział 19. Wzorce projektowe nawigacji i układu Stosowanie wzorca projektowego Stacked Galleries Stosowanie kokpitu Stosowanie przestrzeni roboczych Stosowanie widoku dzielonego Stosowanie wzorca projektowego Expand -in -Context Stosowanie nawigacji bocznej Podsumowanie Rozdział 20. Wzorce projektowe danych Stosowanie dynamicznych list Stosowanie wzorca projektowego Image Placeholder Stosowanie wzorca projektowego Non-forced Login Stosowanie wzorca projektowego Drag-to-Reorder Handle Podsumowanie 321 322 331 337 339 343 345 347 348 350 354 358 360 363 366 367 368 370 372 375 377 Kup książkęPoleć książkę Rozdział 21. Antywzorce projektowe interfejsu użytkownika Unikaj ekranu ładowania Unikaj ekranu poradnika Unikaj stosowania okna potwierdzenia Unikaj przycisku Cofnij widocznego na ekranie Unikaj stosowania przycisku menu Unikaj ukrywania paska statusu Unikaj wyświetlania szybkich akcji gestem przewijania Unikaj stosowania rozwiązań projektowych spoza Androida Podsumowanie Skorowidz SPIS TREŚCI 379 380 381 383 384 385 386 387 388 389 390 7 Kup książkęPoleć książkę Kup książkęPoleć książkę 6 I Ł A Z D Z O R 6 INTENCJE ANDROIDA SYSTEM INTENCJI ANDROIDA jest prawdopodobnie najważniejszym mechanizmem oferowanym przez tę platformę. Intencje umożliwiają wewnętrzne i zewnętrzne wiązanie aplikacji. System intencji umożliwia programistom wywoływanie zarówno funkcji platformy Android, jak i funkcji wszystkich pozostałych zainstalowanych aplikacji. Ten sam system umożliwia aplikacjom udostępnianie funkcji innym aplikacjom. W tym rozdziale wyjaśnię, czym są intencje Androida i gdzie są stosowane. Celem tego rozdziału jest szczegółowe opisanie wpływu mechanizmu intencji na sposób projektowania interfejsu użytkownika aplikacji budowanych dla systemu Android. Rozdział zawiera co prawda kilka przykładów, ale nie obejmuje pełnej specy(cid:26) kacji intencji ani wszystkich przypadków użycia. Czytelników zainteresowanych szczegółami technicznymi zachęcam do zapoznania się z dokumentacją Androida (patrz strona http://developer. android.com/reference/android/content/ Intent.html). Kup książkęPoleć książkę CZĘŚĆ II: FUNKCJE I KOMPONENTY INTERFEJSU UŻYTKOWNIKA PLATFORMY ANDROID INTENCJE UMOŻLIWIAJĄ APLIKACJOM WZAJEMNĄ WSPÓŁPRACĘ Intencja przypomina trochę technicznie i formalnie zde(cid:26) niowany komunikat wysyłany do komponentu aplikacji. Taki komunikat może być wysyłany albo wewnątrz aplikacji, albo przekazywany pomiędzy różnymi aplikacjami bądź nawet pomiędzy systemem operacyjnym a aplikacjami. Aplikacja może na przykład wysłać do systemu operacyjnego komunikat o potrzebie wybrania jakiegoś numeru telefonu. Największą zaletą mechanizmu intencji jest możliwość współpracy różnych aplikacji i wzajemnego udostępniania funkcji w łatwy i bezproblemowy sposób. Każda aplikacja może zażądać od platformy identy(cid:26) kacji pozostałych aplikacji udostępniających określone funkcje, po czym użyć jednej z tych aplikacji lub umożliwić użytkownikowi wybór właściwej. Jednym z najbardziej popularnych przypadków użycia intencji jest udostępnianie przez aplikację jakiegoś zasobu, na przykład obrazu. Niezależnie od tego, czy chodzi o edytor zdjęć, aplikację obsługującą aparat fotogra(cid:26) czny, aplikację gra(cid:26) czną, czy dowolny inny program, istnieje możliwość poinformowania systemu Android o istnieniu obrazu do udostępnienia. System operacyjny „wie”, które spośród pozostałych zainstalowanych aplikacji mogą obsłużyć to żądanie. Przeanalizujmy teraz konkretny przykład. Poniższa sekwencja obrazów ilustruje ciąg czynności wykonywanych przez użytkownika, który za pomocą czterech różnych aplikacji robi zdjęcie i publikuje je w serwisie społecznościowym. Na rysunku 6.1 pokazano pierwszy krok, polegający na zrobieniu zdjęcia za pomocą aplikacji aparatu dostępnej w Androidzie. Następnie użytkownik otwiera to zdjęcie w aplikacji edytora (Skitch), gdzie umieszcza na zdjęciu prosty napis (patrz rysunek 6.2). I wreszcie użytkownik udostępnia gotowe (przerobione) zdjęcie na Twitterze (patrz rysunek 6.3). 92 Rysunek 6.1. Użytkownik robi zdjęcie za pomocą aplikacji aparatu fotogra(cid:28) cznego Androida Źródło: Android Kup książkęPoleć książkę ROZDZIAŁ 6: INTENCJE ANDROIDA Rysunek 6.2. Użytkownik umieszcza na zdjęciu tekst w aplikacji Skitch Źródło: Skitch, copyright 2012 Evernote Corporation 93 Rysunek 6.3. Użytkownik udostępnia gotowe zdjęcie na Twitterze Źródło: Twitter W opisanej sekwencji na szczególną uwagę zasługuje brak konieczności zapisywania zdjęcia w galerii czy systemie plików — użytkownik może osiągnąć swój cel bez zapisywania obrazu. Plik obrazu jest automatycznie przenoszony przez system operacyjny Android bez wiedzy i ingerencji użytkownika. Ostatni krok (udostępnienie zdjęcia na Twitterze) jest wykonywany przez aplikację Twitter, zatem użytkownik nie musi się dodatkowo logować w celu sprawdzenia, czy jego wpis ze zdjęciem rzeczywiście jest gotowy do publikacji. KORZYSTANIE Z SERWISÓW SPOŁECZNOŚCIOWYCH I UDOSTĘPNIANIE ZASOBÓW Aplikacje mobilne i serwisy społecznościowe wprost doskonale do siebie pasują. Ludzie kochają swoje telefony i uwielbiają się dzielić w wybranych serwisach społecznościowych dosłownie wszystkim, co widzą, słyszą i jedzą. Na niektórych platformach integracja z Facebookiem i Twitterem jest tylko jednym ze sloganów i narzędzi wykorzystywanych przez marketingowców. Urządzenia z systemem Android oferują możliwość udostępniania Kup książkęPoleć książkę CZĘŚĆ II: FUNKCJE I KOMPONENTY INTERFEJSU UŻYTKOWNIKA PLATFORMY ANDROID zasobów ze wszystkich aplikacji we wszystkich serwisach społecznościowych, w tym na Google+, LinkedIn, Orkut i oczywiście na Facebooku i Twitterze. Ewentualne nowe serwisy społecznościowe muszą tylko przygotować wersje swoich aplikacji dla platformy Android, stosując odpowiednie (cid:26) ltry intencji (to zagadnienie zostanie wyjaśnione w dalszej części tego rozdziału). Po zainstalowaniu aplikacji użytkownicy mogą udostępniać w nowej sieci społecznościowej zasoby bezpośrednio z galerii, wszystkich odpowiednio zaimplementowanych aplikacji do robienia zdjęć, aplikacji pocztówkowych, edytorów gra(cid:26) cznych, edytorów tekstu. Z tego samego powodu użytkownicy nie są ściśle przywiązani do o(cid:26) cjalnych aplikacji klienckich. Na rysunku 6.4 pokazano proces udostępniania obrazu przez użytkownika. Warto zwrócić uwagę na aplikacje Seesmic, Plume, Tweet Lanes, TweetDeck i Twitter — wszystkie są klientami Twittera, a użytkownik może swobodnie wybrać tę, która posłuży do udostępnienia zdjęcia w tym serwisie. 94 Rysunek 6.4. Użytkownik wybrał opcję udostępnienia pliku z aplikacji galerii systemu Android. System operacyjny Android prosi użytkownika o wskazanie aplikacji, która ma być użyta do zakończenia tej operacji Źródło: Android Podczas budowy aplikacji dla systemu Android nie musimy tracić czasu na integrację z serwisami społecznościowymi — wszystkim zajmie się platforma. Nie musimy wybierać aplikacji, które naszym zdaniem powinny być obsługiwane; nie musimy też implementować żadnych funkcji odpowiedzialnych za udostępnianie zasobów w konkretnych serwisach. Nasze zadania ograniczają się do implementacji intencji udostępniania zasobów zgodnie ze specy(cid:26) kacją. Warto pamiętać, że na przykład lista aplikacji widoczna na rysunku 6.4 jest generowana automatycznie przez system operacyjny, zatem nawet tego elementu nie Kup książkęPoleć książkę ROZDZIAŁ 6: INTENCJE ANDROIDA musimy samodzielnie implementować. Wszystkim zajmuje się system operacyjny. Warto też podkreślić, że lista widoczna na rysunku 6.4 obejmuje tylko te aplikacje, które oferują możliwość udostępniania obrazów. Użytkownik nigdy nie otrzymuje do wyboru aplikacji, które nie będą „wiedziały”, co zrobić z wybranym typem danych. Przeanalizujmy teraz rysunek 6.5. Pokazano na nim efekt wywołania podobnej intencji udostępniania, jednak tym razem przedmiotem publikacji jest nie obraz, tylko adres URL skopiowany z przeglądarki. System interpretacji intencji Androida automatycznie określa, które aplikacje należy udostępnić na wyświetlanej liście. Do mechanizmu interpretacji intencji wrócę w dalszej części tego rozdziału. 95 Rysunek 6.5. Użytkownik wybrał opcję udostępnienia adresu URL. System operacyjny Android nie wyświetla już aplikacji obsługujących obrazy, tylko aplikacje, które potra(cid:28) ą przetworzyć adres URL Źródło: Android PRACA Z PRZEGLĄDARKAMI Przeglądarki należą do najważniejszych elementów smartfonów i tabletów. Są bodaj najczęściej używanymi aplikacjami na wszystkich urządzeniach z systemem Android. Okazuje się, że system intencji umożliwia wiązanie naszych aplikacji także z przeglądarkami. Przeglądarki dla Androida (przynajmniej te prawidłowo zaimplementowane) używają intencji do otwierania każdego linka dotkniętego przez użytkownika. Takie intencje Kup książkęPoleć książkę CZĘŚĆ II: FUNKCJE I KOMPONENTY INTERFEJSU UŻYTKOWNIKA PLATFORMY ANDROID zwykle są używane przez samą przeglądarkę, jednak zdarza się, że zasoby wskazywane przez adres URL mogą być lepiej prezentowane przez inną aplikację. Aplikacja może zasygnalizować systemowi operacyjnemu możliwość obsługi adresów URL pasujących do pewnych wzorców, na przykład z określoną nazwą domeny. W momencie dotknięcia przez użytkownika linka pasującego do tego wzorca system operacyjny wyświetli listę z możliwością wyboru właściwej aplikacji. Na rysunku 6.6 pokazano przykład listy wyświetlonej po dotknięciu przez użytkownika zwykłego linka HTML wskazującego sklep Google Play. System operacyjny Android rozpoznaje ten link jako specjalny przypadek, który może być dodatkowo obsłużony przez aplikację Google Play — w związku z tym system umożliwia użytkownikowi wybór aplikacji, która wyda mu się najwłaściwsza dla tego linka. Oprócz dwóch przeglądarek zainstalowanych przez samego użytkownika lista zawiera także aplikację Google Play jako jedną z możliwych opcji. 96 Rysunek 6.6. Użytkownik kliknął w przeglądarce Androida link wskazujący sklep Google Play. System operacyjny wykrył, że istnieje inna aplikacja, która może obsłużyć ten adres URL, i zaproponował użytkownikowi wybór kilku aplikacji, które mogą przetworzyć to żądanie Źródło: Android O sile opisanego mechanizmu decyduje między innymi brak wymagań dotyczących specjalnych konstrukcji składniowych po stronie serwisu internetowego. Strona internetowa zawiera standardowy link, który przeniósłby użytkownika na witrynę sklepu z aplikacjami Androida (gdyby ten użytkownik korzystał ze standardowej przeglądarki internetowej lub nie dysponował na swoim urządzeniu zainstalowaną aplikacją Google Play). Kup książkęPoleć książkę ROZDZIAŁ 6: INTENCJE ANDROIDA Wskazówka. Jeśli nasza aplikacja oferuje alternatywny sposób przeglądania treści dostępnej w internecie, koniecznie powinniśmy zadbać o subskrypcję adresów URL pasujących do odpowiedniego wzorca (na przykład domeny). Nie ma powodu, by nie skorzystać z tej możliwości. Tak zbudowana aplikacja będzie traktowana jako lepsza alternatywa dla przeglądarki podczas interakcji z wybranym rodzajem treści. Jeśli aplikacja nie jest taką alternatywą, powinniśmy albo przemyśleć swoją strategię, albo poprawić samą aplikację. Warto pamiętać, że intencje związane z adresami URL obejmują pełne adresy, w tym wszystkie parametry. Oznacza to, że nasza aplikacja może bezpośrednio otwierać właściwą treść. W powyższym przykładzie wybór aplikacji Google Play spowoduje skierowanie użytkownika bezpośrednio do strony odpowiedniej aplikacji w sklepie Google Play. Podobnie, link do serwisu YouTube otwarty w aplikacji YouTube skieruje użytkownika bezpośrednio na stronę umożliwiającą odtworzenie odpowiedniego zapisu wideo. JAK DZIAŁAJĄ INTENCJE ANDROIDA? Czas zajrzeć do wnętrza systemu i sprawdzić, jak naprawdę działają intencje platformy Android. Ten podrozdział polecam także czytelnikom, których nie interesują szczegóły techniczne, ponieważ dobre rozumienie intencji może bardzo ułatwić ocenę, co jest, a co nie jest możliwe do osiągnięcia za pomocą tego mechanizmu. Warto też opanować kilka terminów związanych z intencjami. Przykłady prezentowane w tym rozdziale są bardzo proste, jednak czytelnicy niebędący programistami mogą je pominąć. RODZAJE INTENCJI Istnieją dwa rodzaje intencji: intencje aktywności (ang. activity intents) i intencje rozgłaszania (ang. broadcast intents).  Intencje aktywności. Intencje aktywności zawsze cechują się jedną aplikacją nadawcy i jedną aplikacją obsługującą. Aplikacja obsługująca może mieć postać aktywności lub usługi. Intencje aktywności podzielono na dwie dodatkowe kategorie: intencje jawne i intencje niejawne.  Intencje jawne. Jeśli aplikacja została przygotowana z myślą o obsłudze danej intencji przez konkretną aktywność lub klasę usługi, warto wywołać intencję jawną. Taka intencja będzie obsługiwana bezpośrednio przez odpowiednią aktywność lub usługę. W ten sposób aplikacje zwykle obsługują komunikację wewnętrzną. Mimo że intencje jawne są bardzo ważnymi konstrukcjami, nie są zbyt interesujące w kontekście interfejsów użytkownika.  Intencje niejawne. Intencje niejawne są używane w sytuacji, gdy aplikacja wywołująca nie dysponuje z góry informacją, która aplikacja obsłuży to żądanie. Aplikacja wywołująca tworzy intencję opisującą rodzaj akcji, która ma być wykonana, po czym dołącza do tej intencji niezbędne dane i wysyła ją do systemu operacyjnego. Mechanizm intencji niejawnych umożliwia tworzenie luźnych relacji pomiędzy aplikacjami wywołującymi a aplikacjami odpowiadającymi na te wywołania. 97 Kup książkęPoleć książkę 98 CZĘŚĆ II: FUNKCJE I KOMPONENTY INTERFEJSU UŻYTKOWNIKA PLATFORMY ANDROID Interfejs pomiędzy tymi aplikacjami jest precyzyjnie zde(cid:26) niowany, ale żadna z nich nie dysponuje wiedzą o aplikacji po drugiej stronie. Luźne związki pomiędzy komponentami znacznie ułatwiają konserwację aplikacji, ponieważ zmiany w pozostałych komponentach lub aplikacjach nie utrudniają pracy innych aplikacji i komponentów (o ile nie naruszają wcześniejszego interfejsu). Niezależność od pozostałych aplikacji oznacza też, że aplikacje, o których być może nawet nie słyszeliśmy podczas prac nad własną aplikacją, mogą w przyszłości udostępniać jej przydatne funkcje. Intencje niejawne są bardzo ciekawe i istotne z perspektywy projektanta interfejsu użytkownika. Zrozumienie ich działania jest absolutnie konieczne do budowania dobrych aplikacji dla Androida.  Intencje rozgłaszania. Intencje rozgłaszania są (jak nietrudno się domyślić) wysyłane przez jedną aplikację, ale mogą być odbierane i obsługiwane przez wielu adresatów. Intencje aktywności zawsze są wysyłane przez jedną aplikację i obsługiwane przez jedną aplikację docelową. W niektórych przypadkach taka komunikacja jeden- jeden nie wystarczy. Niektóre zdarzenia, na przykład te dotyczące niskiego poziomu naładowania baterii, mogą zainteresować więcej aplikacji. W takich przypadkach konieczne jest zastosowanie techniki rozgłaszania. Mechanizm rozgłaszania wykorzystuje te same rozwiązania co intencje jawne, jednak tak wysyłane intencje nie są obsługiwane przez aktywności ani usługi, tylko przez odbiorców rozgłaszania. TECHNICZNY PRZYKŁAD WYSYŁANIA INTENCJI W tym punkcie przeanalizujemy przykład kodu umożliwiającego użytkownikom aplikacji wykonywanie dodatkowych operacji na adresach pocztowych. Podobne rozwiązania są dość powszechne w takich domyślnych aplikacjach Androida jak Kalendarz czy Mapy Google. Dane adresowe dobrze ilustrują potencjał systemu intencji. Przypuśćmy, że nasza aplikacja dysponuje informacjami o adresie pocztowym. Warto w takim przypadku umożliwić użytkownikom przejście do widoku mapy lub nawet wybór opcji nawigowania do danego adresu. Warto pamiętać, że nie musimy wiedzieć, co użytkownicy zrobią z informacjami adresowymi. To do nich należy wybór aplikacji, której będą chcieli użyć. Jedną z najważniejszych zalet stosowania intencji jest brak konieczności pisania jakiegokolwiek kodu map czy nawigacji na poziomie naszej aplikacji — możemy po prostu przekazać dane adresowe do przetworzenia przez inne aplikacje. Wysyłanie intencji jest bardzo proste. Warto przeanalizować poniższy przykład kodu. Kod w tej formie mógłby występować dosłownie wszędzie, jednak na potrzeby tego przykładu zostanie umieszczony w klasie aktywności. Intencja jest wywoływana w momencie dotknięcia przez użytkownika przycisku interfejsu. sendIntent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Uri geoUri = Uri.parse(“geo:0,0?q=”+ addressField.getText().toString()); Intent mapCall = new Intent(Intent.ACTION_VIEW, geoUri); startActivity(mapCall); } }); Kup książkęPoleć książkę ROZDZIAŁ 6: INTENCJE ANDROIDA Po wysłaniu intencji na ekranie zostanie wyświetlone doskonale znane okno dialogowe wyboru aplikacji (patrz rysunek 6.7). Jeśli na przykład użytkownik wybierze Mapy Google, aplikacja otworzy widok mapy, od razu wskazując prawidłowy adres (patrz rysunek 6.8). 99 Rysunek 6.7. Okno dialogowe wyboru aplikacji po wysłaniu intencji przez aplikację Źródło: Android Rysunek 6.8. Mapy Google otwierają wysłany adres Źródło: Google Inc. FILTRY INTENCJI: AKCJE, DANE I KATEGORIE Skąd system operacyjny „wie”, która aktywność, usługa lub który odbiorca rozgłaszania ma otrzymać daną intencję? Skąd pewność, że wysyłana przez naszą aplikację intencja będzie obsługiwana tylko przez aktywności wykonujące operacje, na których nam zależy? Przekazujemy sterowanie poza własną aplikację do jakiejś innej aplikacji. W tej kwestii musimy się zdać na system operacyjny, który zadba o kierowanie użytkowników do właściwych aplikacji. Warto w tym kontekście zajrzeć do wnętrza systemu i zrozumieć, jak działa mechanizm Androida odpowiedzialny za interpretację intencji. W systemie Android zastosowano dwa główne komponenty. Dla każdej aktywności, usługi lub każdego odbiorcy rozgłaszania można zde(cid:26) niować zbiór powiązanych (cid:26) ltrów intencji (zbiór intencji możemy zde(cid:26) niować albo w pliku manifestu aplikacji, albo dynamicznie, w czasie wykonywania kodu). Intencja zawiera de(cid:26) nicję akcji i pole danych, a często obejmuje także kategorie i pewne dane dodatkowe. Po otrzymaniu intencji system operacyjny porównuje akcję, dane i kategorie z (cid:26) ltrami intencji wszystkich aplikacji i wybiera tylko pasujące aplikacje. Kup książkęPoleć książkę CZĘŚĆ II: FUNKCJE I KOMPONENTY INTERFEJSU UŻYTKOWNIKA PLATFORMY ANDROID Akcje i kategorie to po prostu nazwy. Nie ma w tym mechanizmie niczego skomplikowanego. Nieco trudniejsza jest obsługa właściwych danych i ew. danych dodatkowych. Dane są de(cid:26) niowane albo w formie identy(cid:26) katora URI, albo jako typ MIME. Identy(cid:26) kator URI składa się z dwóch części oddzielonych dwukropkiem. Pierwsza część de(cid:26) niuje typ danych lub schemat. Druga część identy(cid:26) kuje same dane. Na przykład identy(cid:26) kator URI tel:123456789 oznacza, że typem danych jest tel, natomiast dane mają postać 123456789. Z perspektywy mechanizmu interpretacji intencji zasadnicze znaczenie ma typ danych. Interfejsy API systemu Android de(cid:26) niują wiele standardowych akcji, kategorii i kluczy dodatkowych danych. Te standardowe de(cid:26) nicje intencji są stosowane niemal we wszystkich elementach platformy Android. Niektóre są wywoływane przez sam system operacyjny, inne są używane przez aplikacje domyślne dostarczane wraz z tym systemem. Standardowe akcje obejmują wysyłanie (udostępnianie), wybieranie numeru, dzwonienie, wyświetlanie i wiele innych zadań. W tabeli 6.1 opisano standardowe akcje aktywności, natomiast w tabeli 6.2 wymieniono standardowe akcje rozgłaszania. Kompletną listę akcji używanych w pakiecie Android SDK można znaleźć w dokumentacji intencji na stronie http://developer.android.com/reference/ android/content/Intent.html. Tabela 6.1. Standardowe akcje aktywności Androida 100 Nazwa akcji Opis akcji ACTION_ANSWER Żąda obsłużenia przychodzącego połączenia telefonicznego. ACTION_ATTACH_DATA Określa, że pewna część danych powinna zostać dołączona w jakimś innym miejscu. ACTION_CALL Żąda połączenia telefonicznego z osobą wskazaną w danych. ACTION_CHOOSER Żąda wyświetlenia okna wyboru aktywności, w którym użytkownik będzie mógł wskazać dalsze działania. ACTION_DELETE Żąda usunięcia przekazanych danych z kontenera. ACTION_DIAL ACTION_EDIT Żąda wybrania numeru telefonicznego wskazanego w danych. Żąda bezpośredniego dostępu do edycji przekazanych danych. ACTION_FACTORY_TEST Główny punkt wejściowy na potrzeby testów fabrycznych. ACTION_GET_CONTENT Żąda wyświetlenia okna, w którym użytkownik będzie mógł wybrać konkretny rodzaj danych, oraz zwrócenia wybranego typu. ACTION_INSERT Żąda umieszczenia pustego elementu w danym kontenerze. ACTION_MAIN ACTION_PICK Żąda uruchomienia jako głównego punktu wejściowego (nie oczekuje żadnych danych). Żąda wybrania elementu z przekazanych danych i zwrócenia wybranego elementu. ACTION_PICK_ACTIVITY Żąda wybrania aktywności dla danej intencji i zwrócenia odpowiedniej klasy. Kup książkęPoleć książkę ROZDZIAŁ 6: INTENCJE ANDROIDA Nazwa akcji ACTION_RUN Opis akcji Żąda uruchomienia przekazanych danych (cokolwiek to znaczy). ACTION_SEARCH Żąda wykonania operacji wyszukiwania. ACTION_SEND Żąda dostarczenia pewnych danych do kogoś innego. ACTION_SENDTO Żąda wysłania wiadomości do adresata wskazanego w danych. ACTION_SYNC ACTION_VIEW Żąda synchronizacji danych. Żąda wyświetlenia danych na ekranie urządzenia. Tabela 6.2. Standardowe akcje rozgłaszania Androida Nazwa akcji Opis akcji ACTION_BATTERY_CHANGED ACTION_BOOT_COMPLETED ACTION_PACKAGE_ADDED Ta akcja jest regularnie rozgłaszana w celu przekazania stanu ładowania, poziomu naładowania i innych informacji na temat baterii urządzenia. Ta akcja jest rozgłaszana tylko raz, bezpośrednio po uruchomieniu systemu. Akcja informuje o zainstalowaniu na urządzeniu nowego pakietu aplikacji. ACTION_PACKAGE_DATA_CLEARED Akcja informuje o usunięciu przez użytkownika danych jakiegoś pakietu. ACTION_PACKAGE_REMOVED Akcja informuje o usunięciu z urządzenia jakiegoś istniejącego pakietu aplikacji. ACTION_PACKAGE_RESTARTED Akcja informuje o ponownym uruchomieniu (przez użytkownika) jakiegoś pakietu i o zabiciu wszystkich procesów tego pakietu. ACTION_POWER_CONNECTED Akcja informuje o podłączeniu urządzenia do zewnętrznego źródła zasilania. ACTION_POWER_DISCONNECTED Akcja informuje o odłączeniu urządzenia od zewnętrznego źródła zasilania. ACTION_SHUTDOWN Akcja informuje o wyłączaniu urządzenia. ACTION_TIME_CHANGED Akcja informuje o zmianie strefy czasowej. ACTION_TIMEZONE_CHANGED Akcja informuje o ustawieniu godziny. ACTION_TIME_TICK Akcja informuje o zmianie bieżącej godziny. ACTION_UID_REMOVED Akcja informuje o usunięciu z systemu identy(cid:18) katora użytkownika. Oprócz typu danych i akcji system operacyjny uwzględnia kategorię i (cid:26) ltr intencji. W większości przypadków jedyną pasującą kategorią jest kategoria domyślna. Za każdym razem, gdy nasz kod wysyła intencję, system operacyjny automatycznie dodaje do niej kategorię domyślną. Właśnie dlatego zawsze należy dodawać tę kategorię do de(cid:26) niowanych (cid:26) ltrów intencji. 101 Kup książkęPoleć książkę CZĘŚĆ II: FUNKCJE I KOMPONENTY INTERFEJSU UŻYTKOWNIKA PLATFORMY ANDROID Kategorie intencji są istotne tylko wtedy, gdy chcemy zastąpić aktywności ekranu domowego lub stacji dokującej. Wyjątkiem od tej zasady jest kategoria programu startowego. Wszystkie aktywności z (cid:26) ltrem intencji obejmującym tę kategorię będą wyświetlane w oknie programu startowego aplikacji. Intencje mogą oczywiście wysyłać więcej danych (nie tylko identy(cid:26) katory URI). Każda intencja może obejmować dodatkowe pola danych, które nie podlegają formalnej specy(cid:26) kacji i nie są uwzględniane przez mechanizm interpretacji intencji. Dodatkowe pola są powiązane z różnymi akcjami. Aktywności obsługujące określone typy akcji oczekują dodatkowych danych z konkretnymi kluczami. Typowymi przykładami takich dodatkowych kluczy są wiadomości poczty elektronicznej, tytuły, teksty, tematy i dane strumieniowe (na przykład podczas udostępniania obrazów). Kompletną listę takich standardowych dodatków można znaleźć w dokumentacji platformy Android na stronie http://developer. android.com/reference/android/content/Intent.html. TECHNICZNY PRZYKŁAD OTRZYMYWANIA INTENCJI Z technicznego punktu widzenia odbieranie intencji nie jest bardziej złożone niż ich wysyłanie. W tym punkcie wykorzystamy ten sam przykład, tyle że zaczerpnięty ze strony odbierającej intencje. Wyobraźmy sobie, że nasza aplikacja może zaoferować użytkownikom pewną ciekawą usługę w momencie, w którym chcą wyświetlić adres pocztowy. Usługa może na przykład wyświetlić instrukcje nawigacyjne dla rowerzystów lub pasażerów transportu publicznego bądź tekstowy opis miejsca, w którym znajduje się dany adres. W procesie odbierania intencji potrzebujemy dwóch komponentów. Po pierwsze, musimy dodać aktywność do pliku manifestu. W elemencie activity musimy zde(cid:26) niować (cid:26) ltr intencji, aby system Android mógł określić, które rodzaje intencji mogą być obsługiwane przez daną aktywność. W poniższym przykładzie kodu widać możliwy sposób de(cid:26) niowania (cid:26) ltra intencji z myślą o obsłudze adresów URI ze schematem geo. Schemat geo identy(cid:26) katora URI jest formalną specy(cid:26) kacją opisywania geolokalizacji. activity android:name=”.intents.ReceiveIntentExampleActivity” android:label=”Smashing Android UI” intent-fi lter action android:name=”android.intent.action.VIEW” / category android:name=”android.intent.category.DEFAULT” / data android:scheme=”geo” / /intent-fi lter /activity Zachęcam do zeskanowania tego kodu QR za pomocą telefonu z systemem Android — w ten sposób można otworzyć aplikację i sprawdzić działanie tego przykładu. Warunkiem działania tego rozwiązania jest oczywiście wcześniejsza instalacja aplikacji dołączonej do tej książki. Informacje na ten temat można znaleźć we „Wprowadzeniu”. 102 Kup książkęPoleć książkę ROZDZIAŁ 6: INTENCJE ANDROIDA W kodzie aktywności możemy odczytać geolokalizację dołączoną do intencji. W poniższym przykładzie identy(cid:26) kator URI geolokalizacji jest odczytywany z danych intencji i wyświetlany w niezmienionej formie. W prawdziwej aplikacji należałoby przetworzyć identy(cid:26) kator URI, aby na jego podstawie zdecydować o dalszych działaniach. @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTitle(“Receive Intent Example”); setContentView(R.layout.receive_intent_example); TextView addressText = (TextView) fi ndViewById(R.id.example_address_fi eld); addressText.setText(“” + getIntent().getData()); } TWORZENIE WŁASNYCH AKCJI Nie musimy się ograniczać do standardowych, prede(cid:26) niowanych akcji. Nic nie stoi na przeszkodzie, abyśmy tworzyli własne. Być może nasza aplikacja oferuje usługę, która będzie przydatna dla pozostałych programistów; a może sami budujemy wiele aplikacji, ale chcemy uniknąć ścisłych związków pomiędzy nimi. Nasze niestandardowe akcje to tak naprawdę nazwy dla zde(cid:26) niowanych akcji. Zaleca się poprzedzanie akcji nazwą pakietu, aby uniknąć ich mylenia z akcjami de(cid:26) niowanymi przez innych producentów oprogramowania i programistów. Poniższy kod de(cid:26) niuje (cid:26) ltr intencji dla zde(cid:26) niowanej przeze mnie niestandardowej akcji. Gdybym teraz opublikował nazwę tej akcji (com.androiduipatterns. smashingandroidui.examples.EXAMPLE_ACTION) na stronie internetowej mojej aplikacji, pozostali programiści mogliby jej użyć do zintegrowania swoich aplikacji z tą konkretną aktywnością. activity android:name=”.intents.ReceiveCustomIntentExampleActivity” android:label=”Smashing Android UI” intent-fi lter action android:name=”com.androiduipatterns .smashingandroidui.examples.EXAMPLE_ACTION” / category android:name=”android.intent.category.DEFAULT” / /intent-fi lter /activity 103 Kup książkęPoleć książkę CZĘŚĆ II: FUNKCJE I KOMPONENTY INTERFEJSU UŻYTKOWNIKA PLATFORMY ANDROID INTENCJE SĄ WSZĘDZIE W systemie Android niemal wszystko jest wywoływane przy użyciu intencji. Za każdym razem, gdy uruchamiamy aplikację z poziomu programu startowego, w rzeczywistości używamy intencji wywołanej przez ten program startowy lub ekran domowy. Co więcej, nawet ekran domowy uruchamiamy, wywołując intencję. Jeśli więc chcemy zastąpić domyślny ekran domowy innym ekranem, musimy doprowadzić do sytuacji, w której inna aplikacja będzie obsługiwała intencję ekranu domowego. Ekran domowy Androida i zasobnik aplikacji to także aplikacja, tyle że z odpowiednim (cid:26) ltrem intencji. Nawet domyślna aplikacja telefonu jest uruchamiana za pośrednictwem intencji. Także wybór telefonu i nawiązanie połączenia odbywają się przy użyciu intencji. Obsługę tych intencji możemy zaimplementować też we własnych aplikacjach. Jeśli postanowimy napisać aplikację w miejsce domyślnego programu do dzwonienia, będziemy mogli to zrobić. W systemie Android nie istnieje pojęcie przeglądarki Androida. Mówiąc precyzyjnie, istnieje aplikacja nazwana Android Browser, jednak jej istnienie nie wyklucza możliwości stosowania wielu innych przeglądarek na tej platformie. Oznacza to, że nie możemy z góry zakładać, że użytkownik naszej aplikacji używa tej czy innej przeglądarki. Każda aplikacja obsługująca adresy URL może zyskać status domyślnej przeglądarki użytkownika — wystarczy, że implementuje aktywność z odpowiednim (cid:26) ltrem intencji. Ta elastyczność platformy Android stwarza mnóstwo możliwości także dla naszych aplikacji. Warto przy tym pamiętać o wyzwaniach — nie możemy zakładać, że użytkownik korzysta na przykład z domyślnej książki adresowej czy przeglądarki bądź domyślnego ekranu domowego lub programu do dzwonienia. INTENCJE KONTRA INTERFEJSY API APLIKACJI Intencje nie są jedynym sposobem udostępniania funkcji przez nasze aplikacje. Wiele serwisów społecznościowych i innych usług udostępnia interfejsy API, które umożliwiają integrowanie ich funkcji bezpośrednio z budowanymi aplikacjami. Mimo że w pewnych przypadkach takie rozwiązanie jest uzasadnione, warto dokładnie przeanalizować wady i zalety tego modelu. W wielu sytuacjach będziemy musieli sami zaimplementować mnóstwo funkcji, które w normalnych okolicznościach moglibyśmy czerpać z innych aplikacji za pomocą intencji. Co więcej, każda rozbudowa aplikacji i serwisu społecznościowego o nową funkcję będzie dezaktualizowała naszą aplikację do czasu uzupełnienia implementacji o obsługę tej funkcji. W przypadku zastosowania intencji nowe funkcje otrzymamy automatycznie przy okazji aktualizacji aplikacji klienckiej. Inną poważną wadą ścisłej integracji jest konieczność implementacji w kodzie aplikacji mechanizmów uwierzytelniania użytkownika (jeśli wymaga tego stosowany interfejs API). W takim przypadku musimy uzyskać od użytkownika dane uwierzytelniające lub otworzyć wbudowany widok odpowiedzialny za uwierzytelnianie. Niezależnie od wybranego modelu użytkownik będzie musiał zaufać naszej aplikacji — albo wpisać swoje dane uwierzytelniające w oknie naszej aplikacji, albo autoryzować wykonywanie operacji przez naszą aplikację w jego imieniu. Kto z nas byłby skłonny udostępnić swoje dane dostępu do 104 Kup książkęPoleć książkę ROZDZIAŁ 6: INTENCJE ANDROIDA Facebooka przypadkowej aplikacji? Czy dalibyśmy nieznanej aplikacji prawo publikowania wpisów na naszej tablicy na Facebooku? PODSUMOWANIE Mam nadzieję, że udało mi się dowieść potencjału i elastyczności mechanizmu intencji. Podczas projektowania aplikacji warto poświęcić chwilę na analizę możliwości sprawienia, że nasz produkt będzie integralną częścią urządzenia użytkownika. Czy nasza aplikacja dysponuje funkcjami, które mogłaby udostępniać pozostałym aplikacjom w formie intencji? Czy może wykorzystać istniejące funkcje udostępniane przez inne aplikacje, tak abyśmy nie musieli sami pisać odpowiedniego kodu? Ten rozdział nie miał na celu prezentacji wszystkich technicznych aspektów intencji. Czytelnikom zainteresowanym szczegółowymi informacjami na ten temat polecam książkę Reto Meiera zatytułowaną Professional Android 4 Application Development (Wiley, 2012) oraz dokumentację dla programistów opublikowaną na stronach (cid:26) rmy Google (patrz adres http://developer.android.com/reference/android/content/Intent.html). Informacje na temat intencji udostępnianych przez inne aplikacje można znaleźć na stronie internetowej Open Intents pod adresem www.openintents.org (szczególnie cenny jest utrzymywany i udostępniany w tym serwisie rejestr intencji). 105 Kup książkęPoleć książkę CZĘŚĆ II: FUNKCJE I KOMPONENTY INTERFEJSU UŻYTKOWNIKA PLATFORMY ANDROID 106 Kup książkęPoleć książkę SKOROWIDZ SKOROWIDZ 390 1 12key, 226 A Able Remote, 174 AccelerateDecelerateInterpolator, AccelerateInterpolator, 209 Action Bar, 111, 162, 322 ActionBarSherlock, 87, 330, 336, 209 358 actionDone, 168 actionGo, 168 actionNext, 168 actionNone, 168 actionPrevious, 168 actionSearch, 168 actionSend, 168 actionUnspecified, 168 activity intents, 97 AdapterViewFlipper, 133 adjustPan, 163 adjustResize, 163 ADW Launcher, 69 akcje kategorie, 330 aktualizacje starszych urządzeń, 72 aktualizowanie aplikacji, 295 aktywność, 83, 108 architektura, 292 cykl życia, 114 de(cid:25) niowanie tybu wprowadzania danych, 163 fragmenty, 290 inicjowanie, 108 kontrola przepływu iukładu, 293 przykładowa aplikacja, 298, 305 dodatkowa aktywność, 307 tryb adjustPan, 164 tryb adjustResize, 164 uruchamianie (cid:22) agi intencji, 108 wyzwalanie, 85 zabijanie, 114 zakończenie, 115 Aldiko, 351 Amazon Android App Store, 74 analiza przykładowej aplikacji, 296 AnalogClock, 133 Android Action Bar, 24 biblioteki tworzone przez społeczność, 76 cykl aktualizacji, 70 diagram struktury, 82 dokumentacja referencyjna, 88 domyślna czcionka, 192 domyślne komponenty tekstowe, 178 działanie menu systemu, 24 ekran stanu baterii, 50 ekrany domowe widgety aplikacji, 123 element sterujący krzyżyk, 171 elementy składowe aplikacji, 82 fragmentacja, 62, 77 framework Android, 76 układy, 83 gotowe animacje, 204 Holo aplikacja Tasks, 67 ikony startowe, 200 interfejs API, 66 de(cid:25) niowanie akcji, kategorii ikluczy, 100 mechanizm animacji właściwości, 206 zapisywanie stanu aktywności, 114 interpretacja intencji, 99 stanów, 1911 jako open source, 75 jądro Linuxa, 75 klawiatura ekranowa, 162 kolory domyślne, 195 komponenty, 75 nawigacji, 108 platformy, 82 licencja open source, 63 łączenie zdodatkowymi ekranami, 174 Market, 67 mody(cid:25) kacja CyanogenMod, 69 na tabletach, 71 nieograniczoność instalowania, 73 obrazy 9-patch, 253 obsługa gestów, 55 urządzeń zewnętrznych, 172 o(cid:25) cjalne wskazówki, 88 otwartość na mody(cid:25) kacje, 62 pakiet Android SDK, 86 platforma nowych możliwości, powiadomienia, 140 nadużywanie, 142 poziomy API, 70 praca nad bazą kodu, 76 prede(cid:25) niowane kwali(cid:25) katory, 61 216 projektowanie aplikacji, 48 projekty bibliotek, 87 różnorodność urządzeń, 62, 63 zastosowań, 62 skalowanie gra(cid:25) ki, 184 skórki OEM, 64 społeczność programistów, 76 standardowe interpolatory, 209 sterowanie urządzeniami różnorodność sposobów, 159 stosowanie animacji przejść, 120 struktura, 82 projektu, 86 system intencji, 91 szablony dla Pencil, 41 projektowe, 38 szybkie wyczerpywanie baterii, tablety atelefony, 64 tryby kafelkowania, 261 udostępnanie zasobów aplikacji, 49 93 warunek zgodności, 66 wersje, 70 aproducenci urządzeń, 71 statystyki popularności, 70 wygląd systemu wzależności od producenta, 64 zakładki, 24, 355 Android ADT, 357 Android Asset Studio, 42 Android Browser, 104 Android Compatibility Program, 63 Android Design, 89 Android Design Preview, 42 Android Developers, 88 Android Development Tools, 247 Android SDK emulatory, 285 kontekstowy pasek akcji, 336 obsługa wzorca projektowego Action Bar, 330 piksele niezależne od gęstości, 222 Android-PullToRefresh, 341 animacje czas odtwarzania, 208 dla widoków iich treści, 205 efekt spowalniania, 208 interpolatory, 208 klatki kluczowe, 208 nadpisywanie, 204 nadużywanie, 203 obiektów, 207 poklatkowe, 206 przejść, 120 stosowanie, 203 trasnformacji, 205 układu, 208 właściwości, 207 na starszych urządzeniach, 207 odtwarzanie, 208 tworzenie, 207 zastępowania fragmentów, 292 animatory, 207 Kup książkęPoleć książkę AnticipateOvershootInterpolator, 210 antywzorzec, 318, 379 ekran ładowania, 380 ekran poradnika, 381 okno potwierdzenia, 383 przycisk Cofnij, 384 przycisk Menu, 385 rozwiązania projektowe spoza Androida, 388 Swipe Overlay Quick Actions, 332 szybkie akcje gest przewijania, 387 ukrywanie paska statusu, 386 APK, 73 aplikacja aserwisy społecznościowe, 93 aktualizowanie danych, 128 alternatywne sposoby przeglądania treści, 97 analiza zadań, 49 autonomiczna, 54 ainternetowa, 54 bezpieczeństwo, 74 de(cid:25) niowanie person, 31 dodawanie alternatywnych zasobów, 216 dopracowanie projektu, 38 ekran początkowy, 115 funkcje, 28 acel użytkownika, 28 hybrydowa, 54 implementowanie żądanych funkcji, 30 informująca obłędach, 147 instalowanie bezpośrednie, 73 czcionek, 192 warunek, 73 intencje, 92 interfejsy API, 104 internetowa, 54 ograniczenia, 54 intuicyjność, 22 jakość, 19 Javy, 40 klienta poczty elektronicznej, 126 kod atrybut 208 rysowanie, 265 logowanie błędy, 146 nieobowiązkowe, 372 ładowanie, 380 łatwość użycia, 22 migracja, 294 modułowość, 294 obsługa komunikacji wewnętrznej, 97 odkrywanie problemów, 43 o(cid:25) cjalna dokumentacja, 88 plik manifestu, 136 pobieranie, 74 pomoc dla użytkownika, 382 SKOROWIDZ scaleType, 185 So(cid:20) InputMode, 163 textSize, 193 weight, 237 B back stack, 83 Balsamiq, 40 Beautiful Widgets, 124 bezpieczeństwo aplikacji, 74 biblioteka animacje właściwości, 207 serwis GitHub, 76 zastosowanie we wzorcach projektowych, 316 bitmapy, 261 kafelkowanie morror, 261 repeat, 261 obiekty drawable, 261 blog twórców Androida, 88 błędy, 146 procesów synchronizacji, 148 wymagające obsługi, 146 zadania wykonywane wtle, 148 związane zzadaniami pierwszoplanowymi, 146 BounceInterpolator, 210 Bouncer, 74 broadcast intents, 97 budowa aplikacji hybrydowych, 54 prototypów, 36 Button, 133 C car, 227 Catch notes, 373 cele użytkownika, 26, 27 afunkcje aplikacji, 28 identy(cid:25) kacja, 27 lista, 28 Chronometer, 133 companion widget, 124 Contextual Action Bar, 332 Cupcake, 70 cwac-endless, 370 CyanogenMod, 77 CycleInterpolator, 210 czcionki, 192 dodawanie własnych, 192 instalowanie, 192 niestandardowe, 192 czujniki, 174 położenia, 174 ruchu, 174 środowiskowe, 174 D date, 167 datetime, 167 DecelerateInterpolator, 211 391 powiadamianie ozmianach wśrodowisku, 85 pozycja wsklepie, 75 priorytety powiadomień, 156 problemy wużytkowaniu, 22 projekt ekranu, 231 projektowanie dla Androida, 48 prototyp, 36 przełączanie, 113 przygotowanie projektu, 32 samodostosowujący się projekt, 276 statystyki rozkładu wersji, 72 sterowanie głosowe, 172 struktura, 36 testowanie rzeczywiste dane, 44 transfer danych, 52 połączenia zsiecią WiFi, 53 statystyki, 52 tworzenie wybór funkcji, 72 wybór wersji, 72 udostępnianie funkcji, 91 umieszczanie wsklepach, 75 uruchamianie, 114 użyteczność, 19 wersje zastępujące domyślną, 65 widget, 124 wielozadaniowość, 48 wybór obszaru działania, 29 sklepu, 74 wywołująca, 97 zperspektywy użytkownika, 21 zachowanie spójności zplatformą, 24 zamieszczanie wsklepach, 74 zapamiętywanie stanu, 48 zastąpienie ekranu domowego, 67 programu uruchamiania, 67 zerwanie połączenia, 51 zmiana sieci, 51 zużycie energii, 49 android:animateLayoutChanges, android:fillA(cid:20) er, 206 android:fillViewport, 245 android:layout_gravity, 240 android:layout_height, 244 android:layout_width, 244 android:orientation, 237 android:shape, 258 android:typeface, 193 background, 190 grawitacji, 240 imeOptions, 168, 169 nextFocusDown/Up/Le(cid:20) /Right, 171 onEditorActionListener, 169 parentActivityName, 113 previewImage, 134 Kup książkęPoleć książkę SKOROWIDZ de(cid:25) niowanie elementu fragment, 291 (cid:25) ltru intencji, 102 gradientów, 260 kolorów, 189 minimalnej wielkości widgetu, 131 obiektów drawable wielowastwowych, 262 obiektu koloru, 260 person, 30 prostokąta, 258 skalowalnej wersji obrazu, 254 własnego stylu tekstu, 197 density-independent pixels, 222 design pattern, 313 desk, 227 diagnozowanie układów, 248 diagram architektury informacji, 277 Gmail, 277 dip, 222 długie naciskanie, 334 dodawanie niestandardowych elementów gra(cid:25) cznych do komponentu, 190 własnych czcionek, 192 dokumentacja Androida, 91 dla programistów, 88 referencyjna, 88 dołączona aplikacja, 14 kod źródłowy, 16 zgodność, 16 Donut, 70 dopełnienia, 245, 259 dostęp do gra(cid:25) ki platformy, 203 dostępność, 195 dostosowywanie komponentów automatyczne, 288 wwtrybie jeden do jednego, 287 ruchomych ekranów, 286 wyglądu tekstu, 191 dots per inch, 219 dowód słuszności, 38 dół rodzica, 233 dp, 222 dpad, 226 D-pady, 170 DPI, 219 DragSortListview, 376 Draw 9-patch, 256 Droid, 192 dynamiczna lista, 368 dostosowywanie do dużego ekranu, 369 odmiany, 369 rozwiązywane problemy, 368 skutki stosowania, 368 dynamiczny charakter treści pomieszczenie na ekranie, 361 392 dystrybucja aplikacji, 73 OEM, 64 E Eclair, 70 Eclipse, 40 ekran bezdotykowy, 161 Dodaj nowy element, 280 domowy, 65 alternatywa, 67, 69 dodatkowe interfejsy API, 69 siatka, 131 widgety aplikacji, 86 dotykowy elastyczny, 161 pojemnościowy, 160 przewijanie, 244 przyszłość, 161 rezystancyjny, 160 rodzaje, 160 rysik, 171 dzielony odmiany, 359 kokpitu, 350 koloru iinformacji okolorze przykładowa aplikacja, 300 komunikatu, 370 listy elementów, 278 ładowania, 380 alternatywa, 381 stosowanie, 381 wyświetlanie, 380 łączenie, 285 na pierwszym planie, 286 opcjonalna treść, 287 początkowy, 350 poleceń głosowych, 172 poradnika, 381 alternatywa, 382 wady, 381 ruchomy, 286 szczegółów elementu, 279 technika ruchomych ekranów na pierwszym planie, 286 wkolumnach, 285 wyboru koloru przykładowa aplikacja, 298 elastyczność, 283 element drawable, 179 include, 246 kształtu, 258 layer-list, 262 merge, 246 potomny, 262 RadioGroup, 181 Evernote ekran poradnika, 382 F fill_parent, 244 FLAG_ACTIVITY_CLEAR_TOP, FLAG_ACTIVITY_NEW_TASK, FLAG_ACTIVITY_SINGLE_TOP, 108, 118 108 108 foldery struktury projektu, 86 Format 9-patch, 252 formatowanie na podstawie kodu języka HTML, 196 fragmentacja, 62 fragmenty, 83, 277, 290 awersje platformy Android, 294 architektura, 292 dodawanie do układów, 291 gwarancja elastyczności, 292 implementowanie, 290 izolowanie, 294 metody cyklu życia, 290 przykładowej aplikacji, 299 stosy tylne, 292 transakcje, 291, 292 tworzenie, 290 wywoływanie macierzystej aktywności, 293 zastępowanie, 291 animacje, 292 FrameLayout, 132 framework wieloplatformowy, 54 zarządzania zasobami systemu Android, 215 Froyo, 70 funkcja Cofnij, 383 opcjonalna iwymagana, 72 G galeria, 189 generalized densities, 220 generowanie ikon, 42,198 gesty, 55 długie naciskanie, 334 dotykowe obsługiwane wsystemie Android, 56 ekran rezystancyjny, 160 ekrany pojemnościowe, 160 obsługa funkcja opcjonalna, 72 przez widget, 130 odkrywanie, 57 rzucanie, 344, 354 krytyczne spojrzenie, 357 wady, 387 szybkość reakcji aplikacji, 58 wielodotykowe, 55 wykrywanie, 58 GetJar, 74 Kup książkęPoleć książkę gęstość ekranu, 218 kwali(cid:25) katory, 220 wustawieniach Androida, 219 nieskalowalne obrazy, 220 niska, 220 piksele niezależne, 221 pikseli, 221 foldery kwali(cid:25) katorów, 221 kategorie, 220 superwysoka, 220 średnia, 220 TV, 220 uogólniona, 220 Gigbeat, 22 Gingerbread, 70 gładzik, 170 Gmail, 130 przycisk Cofnij, 383 Go Launcher, 69 Google I/O2012, 360 Google Now, 343 Google Play, 74 fragmenty, 283 pro(cid:25) l programisty, 89 rozszerzanie kontekstowe, 361 wskazówki udostępniania aplikacji, 89 zamieszczanie aplikacji, 74 złośliwe oprogramowanie, 74, 75 Google Play Music Player, 126, 333 Google RSS Reader, 359 Google TV, 272 góra rodzica, 233 gradienty, 260 de(cid:25) nowanie kolorów, 260 liniowy, 260 radialny, 252, 260 rodzaje, 260 sweep, 260 GridLayout, 132 GridView, 133 H hdpi, 220, 222 Hierarchy Viewer, 248 Holo, 66 ikony paska akcji, 201 Holo light ikony paska akcji, 201 Honeycomb, 70, 71 224 hosty widgetów, 123 I Ice Cream Sandwich, 70 IDE, 40 identy(cid:25) kacja elementów listy ikony, 202 animacje właściwości, 207 fragmenty, 294 kwali(cid:25) katory wielkości ekranu, zasobów konkretnych urządzeń, 216 identy(cid:25) kator URI, 100 schemat geo, 102 ikony, 197 atło, 200 aplikacji, 323 automatyczne skalowanie obrazu, 198 bezpośrednie referencje, 202 dostęp do gra(cid:25) ki, 203 generowanie, 198 gotowe, 332 grupy, 198 kopie wstrukturze aplikacji, 202 menu, 199 na ekranie kokpitu, 350 na liście, 202 okien dialogowych, 202 paleta Google, 200 paska akcji, 200 paska stanu, 201 źródła, 201 platformy Android, 202 reprezentujące akcje, 198 startowe, 198 domyślnych aplikacji systemu Android, 200 typy, 198 zakładek, 201 źródła, 201 zestawy, 203 znaczenie, 198 ImageButton, 133 ImageView, 133 implementacja 94 animacji poklatkowej, 206 fragmentów, 283, 290 gestów, 55 gra(cid:25) ki, 265 intencji udostępniania zasobów, komponentów tekstowych użycie miar skalowalnych, 212 krzyżyków igładzików, 170 list powiadomień na pasku statusu, źródła, 188 154 referencyjna, 71 samodostosowujących się projektów, 277 widgetu aplikacji, 135 logika ifunkcja, 136 wskazówki, 126 wzorca Action Bar, 330 Action Drawer, 339 Dashboard, 353 Drag-to-Reorder Handle, 376 Dynamic Lists, 369 Expand-in-context, 363 Image Placeholder, 372 Non-forced Login, 374 SKOROWIDZ Pull-to-Refresh, 341 Quick Actions, 336 Side Navigation, 366 Split View, 360 Stacked Galleries, 350 Swipe-to-Dismiss, 345 Workspaces, 357 importowanie plików układu, 246 instalowanie aplikacji, 73 integracja zserwisami społecznościowymi, 94 inteligentne akcesoria, 174 intencje, 85, 91 ainterfejsy API aplikacji, 104 adres URL, 95, 97 aktywności, 97, 100 Androida zasada działania, 97 de(cid:25) niowanie kategoria domyślna, 101 zbioru, 99 (cid:25) ltry, 99 akcje, 99, 100 dane, 100 kategorie, 99, 102 (cid:22) agi kontrolne, 108, 117 jawne, 85, 97 lista wyboru aplikacji, 96 mechanizm interpretacji, 95 nawigacja wsystemie, 108 niejawne, 85, 97 nowe zadania, 116 oczekujące, 154 otrzymywanie, 102 otwieranie ekranu domowego, 109 linków dotkniętych, 95 platformy Android, 62 powiadomienia, 108 przykład wykorzystania, 92 rozgłaszania, 97, 98, 101 wsystemie Android, 104 wiązanie aplikacji zprzeglądarkami, 95 widgetów, 129 współpraca aplikacji, 92 wysyłanie, 98 wywoływanie, 98 zalety stosowania, 98 zintegrowanie powiadomień, 154 źródła, 105 Intent.FLAG_ACTIVITY_NO_ ANIMATION, 204 interfejs naturalny, 55 interfejs użytkownika, 19 antywzorce projektowe, 379 bezwzględne położenie elementów, 230 budowa przy użyciu fragmentów, 298 de(cid:25) niowanie na tematach domyślnych, 66 dodawanie fragmentów, 291 dotykowy, 55, 57, 160 393 Kup książkęPoleć książkę SKOROWIDZ 394 dotykowy, nawigacja, 22 rozszerzanie onowe gesty, 58 efektywność, 20 elastyczność, 292 głosowy, 172 gruntowna przebudowa, 295 klawiatura, 163 kolekcje widgetów, 83 komponenty, 85, 177 gęstość ekranu, 219 kontekst używania aplikacji, 48 logiczność, 22 łączenie obszarów stałych iskalowalnych, 230 na różnych platformach, 55 obsługa iprezentowanie danych, 367 opracowanie, 19 powiadomienia, 140 projekt wskazówki, 89 projektanci aprogramiści, 20 projektowanie, 20 Android SDK, 41 Balsamiq, 40 model mentalny, 22 narzędzia, 38, 42 OmniGra(cid:18) e, 38 WireframeSketcher, 39 znaczenie dla użytkownika, 48 przyciski, 179 reagowanie na gesty, 58 różnorodność urządzeń, 273 samodostosowujący się tworzenie, 285 schematy, 36, 297 sekcje, 283 skalowalność, 64 stosowane konwencje, 24 struktury większe niż ekran, 244 systemu Android de(cid:25) niowanie, 230 uchwyt przeciągania, 375 widgety, 178 wizualne wskazówki, 22 wzorce projektowe, 314 zakładki, 355 automatyczne dostosowywanie, 288 stosowanie ikon, 201 zamiennik obrazu, 371 animacje przejść, 121 powiadomienia na pasku statusu, interpolator, 208 J Jelly Bean, 70, 71 155 K kafelkowanie, 261 liniowe, 261 radialne, 261 sweep, 261 tryby, 261 kanwa, 265 klasa ActionMode, 336 Android.R.anim, 204 Canvas, 265 Context, 290 dziedzicząca po klasie View, 265 Fragment, 290 FragmentActivity, 294 FragmentManager, 291 FragmentTransaction, 291 Notification, 156 Notification.Builder, 154, 156 NotificationManager, 154 ObjectAnimator, 207 PendingInten, 154 ResponsiveExampleActivity, 299 układu, 247 ViewGroup dziedziczenie, 247 ViewPager, 358 klatki kluczowe, 208 klawiatura ekranowa, 163 element ScrollView, 163 metody wprowadzania danych, 163 niestandardowa, 170 numeryczna, 166 przycisk akcji, 167 rodzaje, 68 sposób wyświetlania, 163 typ danych wejściowych, 166 klawiatura sprzętowa, 170 kod moduły fragmentów, 292 stosowanie wielokrotne, 246 kod QR analiza aplikacji, 296 animacje poklatkowe, 206 animacje układu, 208 animacje właściwości, 207 dopełnienia imarginesy, 245 gradienty, 260 grawitacja układu, 241 importowanie plików układu, 247 109 instalacja skanera, 15 kafelkowanie, 262 kokpit, 353 kontekstowy pasek akcji, 332 kształty, 258 mody(cid:25) kowanie typogra(cid:25) i, 191 nawigacja wsystemie Android, obracanie obiektu drawable, 264 obrazy 9-patch, 253 otrzymywanie intencji, 102 powiadomienia, 156 przycisk akcji iopcje IME, 167 rozszerzanie kontekstowe, 363 rysowanie kształtu, 269 transformacje, 205 tryb edycji pola tekstowego, 169 typ danych wejściowych, 166 układ liniowy, 239 układ siatki, 243 układ względny, 233 uruchamianie, 15 widgety interfejsu użytkownika, wielowarstwowy obiekt drawable, 178 263 kokpit, 350 dostosowywanie do dużego ekranu, 352 krytyczne spojrzenie, 352 miejsce powiadomień, 351 odmiany, 352 skutki stosowania, 351 kolory, 195, 260 cieniowanie tekstu, 195 de(cid:25) niowanie, 189 zasobów, 189 domyślne, 195 konstrukcje składniowe kodu, 189 stosowanie plików kolorów, 190 komponenty, 82 de(cid:25) niowanie wielkości, 244 dostosowywanie automatyczne, 288 jeden do jednego, 287 EditText, 178, 179 foldery, 86 fragmenty, 283 galerii, 189 gra(cid:25) czne skalowanie, 251 ImageView, 184, 256 wartości atrybutu scaleType, 185 interfejsu użytkownika automatyczne dostosowywanie, 277 kolejność na osi Z, 245 konieczność ustawienia wymiarów, 243 kontrolki przybliżania, 185 listy rozwijanej, 337 mody(cid:25) kowanie wyglądu isposobu obsługi, 189 nadpisywanie oryginalnych funkcji, 192 odległości, 245 parametry stanu, 190 paska akcji, 323 pola wyboru, 180 porządek wramach układu, 245 przełączników, 179 selektory, 190 tekstowe, 191 znaczniki języka HTML, 196 TextView, 178, 179 VideoView, 186 wukładzie liniowym, 237 ramkowym, 239 Kup książkęPoleć książkę siatki, 242 względnym, 233 włączników, 180 wielokrotnego użytku, 37, 283 wizualne prezentacje narzędzia Androida, 265 wyboru, 181 wysuwanej szu(cid:22) ady, 187 względem komponentu macierzystego, 234 zmożliwością klikania, 188 zastępowanie, 288 komunikacja między aplikacjami isystemem, 92 między fragmentem aaktywnością, 293 komunikaty aplikacji Evernote, 140 bez możliwości interakcji, 141 obłędach, 146 okrytycznych zdarzeniach, 142 onowych wiadomościach poczty, ozadaniach wtle, 143 pasek statusu, 142 serwisów społecznościowych, 141 149 tosty, 141 zadania wykorzystujące połączenie sieciowe, 143 zdarzenia, 145 konstruktory tworzenie obiektu paint, 267 kontener przewijania, 182, 244 obszary skalowalne, 230 kontrelement kontrolny, 239 kontroler mediów, 186 kontrolka przybliżania, 185 nawigacyjna, 325 widoku, 323 wielkości komponentu, 223 zserwisów społecznościowych, konwersja korzystanie 93 krój pisma, 193 krzyżyk, 170 de(cid:25) niowanie kolejności aktywowania, 171 dodawanie dopełnienia, 259 kształty, 257 kwali(cid:25) katory 225 dostępnej szerokości iwysokości, języka iregionu, 225 kon(cid:25) guracyjne, 216 łączenie, 217 najmniejszej szerokości, 224 orientacji ekranu, 225 poziomy API, 217 proporcji ekranu, 225 stacje dokujące, 227 sterowanie urządzeniem, 226 tryb pracy urządzenia, 227 wersji systemu operacyjnego, 227 wielkość ekranu, 224 zasobów kategorie gęstości pikseli, 220 kraj iregion, 225 L land, 225 large, 224, 309 layout, 83 ldpi, 220, 222 Lehtimäki Juhani, 9 licencja Apache, 76 GPL, 75 LinearInterpolator, 211 LinearLayout, 132 Lint, 294 lista, 187 elementy, 188, 277 opcji komponent wyboru, 181 przewijane wpoziomie, 189 rozwijana, 181 wydajność, 188 zastępowanie widokiem siatki, 288 ListView, 133 long, 225 Ł łączenie powiadomień, 153 M marginesy, 245 match_parent, 244 mdpi, 220, 222 mechanizm animacji właściwości, 206 automatycznego pobierania dodatkowych elementów, 368 nasłuchiwania zdarzeń, 300 podziału widoku na strony, 357, 358 przewijania, 244 rozgłaszania, 98 slektora, 189 sterowania ekran dotykowy, 160 menedżery układów, 232, 249, 277 zasobów, 216, 277 menu rozwijane, 333 metoda addToBackStack(), 292 commit, 291 drawArc, 265 drawBitmap, 265 drawCircle, 265 drawColor, 265 drawLines, 265 drawRect, 265 SKOROWIDZ drawText, 265 getActivity, 290 getFragmentManager(), 291 invalidate(), 266 onActivityCreated(), 290 onCreateView(), 290 onDraw, 266 onDraw(Canvas)., 265 OnScrollListener.onScroll, 370 overridePendingTransition(), 204 setColor, 306 setCustomAnimations(), 292 startActionMode, 337 super, 265 View.registerForContextMenu(), 337 metody wprowadzania danych tryby, 163 model mentalny, 21 czytnika e-booków, 22 kształtowanie, 22 oczekiwania użytkowników, 24 moduł rozszerzeń, 40 mody(cid:25) kowanie typogra(cid:25) i, 191
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Android UI. Podręcznik dla projektantów. Smashing Magazine
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ą: