księgarnia internetowa · przez użytkownika. warto zwrócić uwagę na aplikacje seesmic, plume,...
TRANSCRIPT
-
• Kup książkę• Poleć książkę • Oceń książkę
• Księgarnia internetowa• Lubię to! » Nasza społeczność
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-5This 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 HELIONul. Kościuszki 1c, 44-100 GLIWICEtel. 32 231 22 19, 32 230 98 63e-mail: [email protected]: 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/andruiMożesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Printed in Poland.
http://helion.pl/rt/andruihttp://helion.pl/rf/andruihttp://helion.pl/ro/andruihttp://helion.plhttp://ebookpoint.pl/r/4CAKF
-
Spis treści
O autorze 9
Podziękowania autora 11
Wprowadzenie 13
CZĘŚĆ I WPROWADZENIE DO ARCHITEKTURY SYSTEMU ANDROID 17
Rozdział 1. Użyteczność i projekt interfejsu użytkownika — wprowadzenie 19Technologia kontra projekt interfejsu 20Zrozumieć model mentalny 21Projektowanie dla użytkowników 26Żadna aplikacja nie może robić wszystkiego — wybierz właściwe
obszary działania 29To Ty jesteś ekspertem; użytkownicy nie są projektantami 30Poznaj swoich użytkowników — projektuj dla prawdziwych ludzi 30Podsumowanie 33
Rozdział 2. Wstrzymaj się z kodowaniem 35Budowa prototypów 36Narzędzia projektowe 38Testowanie przez użytkowników 42Podsumowanie 46
Rozdział 3. Specy� ka rozwiązań mobilnych i urządzeń z ekranami dotykowymi 47Projektowanie dla urządzeń mobilnych 48Projektowanie pod kątem interfejsów dotykowych 55Podsumowanie 59
Rozdział 4. Wprowadzenie do platformy Android 61Wyzwania stwarzane przez platformę Android 62Wersje Androida 70Dystrybucja aplikacji dla Androida 73Co oznacza open source? 75Podsumowanie 77
Kup książkę Poleć książkę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
4
SPIS TREŚCI
CZĘŚĆ II FUNKCJE I KOMPONENTY INTERFEJSU UŻYTKOWNIKA PLATFORMY ANDROID 79
Rozdział 5. Struktura aplikacji Androida i wskazówki dostępne w internecie 81Ogólna struktura aplikacji Androida 82Ogólna struktura projektu Androida 86Ofi cjalne wskazówki dla Androida 88Podsumowanie 89
Rozdział 6. Intencje Androida 91Intencje umożliwiają aplikacjom wzajemną współpracę 92Korzystanie z serwisów społecznościowych i udostępnianie zasobów 93Praca z przeglądarkami 95Jak działają intencje Androida? 97Tworzenie własnych akcji 103Intencje są wszędzie 104Intencje kontra interfejsy API aplikacji 104Podsumowanie 105
Rozdział 7. Struktura nawigacji w aplikacjach Androida 107Komponenty nawigacji w systemie Android, aktywności i intencje 108Kontrolki nawigacyjne Androida 109Podsumowanie 121
Rozdział 8. Widgety aplikacji na ekranie domowym 123Zastosowania widgetów aplikacji ekranu domowego 124Aktualizowanie danych widgetu aplikacji 128Układ i funkcje widgetu aplikacji 130Implementacja widgetu aplikacji 135Podsumowanie 137
Rozdział 9. Powiadamianie i informowanie użytkowników 139Metody powiadamiania użytkownika w systemie Android 140Kiedy powiadamiać użytkowników 143Kiedy nie powiadamiać użytkowników 148Unikanie wyskakujących okien 149Optymalne wykorzystywanie powiadomień na pasku statusu 150Podsumowanie 157
Rozdział 10. Projektowanie obsługi przycisków sprzętowych, metod wprowadzania danych i czujników 159
Projektowanie obsługi ekranu dotykowego 160Projektowanie obsługi przycisków sprzętowych 161Projektowanie obsługi klawiatury ekranowej 162Projektowanie obsługi klawiatur sprzętowych 170Projektowanie obsługi krzyżyków i gładzików 170Projektowanie obsługi rysika 171
Kup książkę Poleć książkę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
5
SPIS TREŚCI
Projektowanie głosowego sterowania aplikacją 172Projektowanie obsługi zewnętrznych klawiatur, myszy i touchpadów 172Projektowanie obsługi dołączonych inteligentnych akcesoriów 174Projektowanie obsługi czujników 174Projektowanie obsługi dodatkowego ekranu 174Podsumowanie 175
Rozdział 11. Projektowanie komponentów interfejsu użytkownika platformy 177Stosowanie widgetów interfejsu użytkownika 178Modyfi kowanie widgetów interfejsu użytkownika 189Modyfi kowanie typografi i 191Stosowanie ikon 197Stosowanie animacji i efektów przejść 203Podsumowanie 211
CZĘŚĆ III SKALOWALNY PROJEKT ANDROIDA 213
Rozdział 12. Zarządzanie zasobami Androida 215Stosowanie zasobów Androida 216Projektowanie zasobów pod kątem gęstości pikseli 218Projektowanie pod kątem różnych wymiarów ekranu 223Projektowanie interfejsu pod kątem różnych języków i regionów 225Projektowanie obsługi kontrolek urządzenia 226Projektowanie interfejsu dla różnych wersji platformy 226Projektowanie interfejsu dla różnych trybów pracy urządzeń 227Podsumowanie 227
Rozdział 13. Układy aplikacji Androida 229Strategia układu systemu Android 230Układy defi niowane w plikach XML i w kodzie 232Menedżery układów 232Defi niowanie wielkości układu 243Przewijanie 244Oś Z, porządek komponentów w ramach układu 245Dopełnienia i marginesy 245Importowanie i scalanie plików układu 246Układy niestandardowe 247Narzędzia do budowy interfejsu użytkownika dla systemu Android 247Diagnozowanie układów 248Podsumowanie 249
Rozdział 14. Skalowalna gra� ka 251Format 9-patch 252Obiekty drawable defi niowane w plikach XML 257Rysowanie z poziomu kodu aplikacji 265Podsumowanie 269
Kup książkę Poleć książkę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
6
SPIS TREŚCI
Rozdział 15. Skalowalność to nie wszystko — samodostosowujący się projekt 271Platforma Android to nie tylko telefony 272Samodostosowujący się projekt 274Typowe sposoby tworzenia samodostosowujących się
interfejsów użytkownika 285Podsumowanie 288
Rozdział 16. Implementowanie samodostosowujących się interfejsów użytkownika 289
Wprowadzenie do fragmentów 290Architektura fragmentów i aktywności 292Migracja istniejących aplikacji 294Analiza przykładowej aplikacji 296Podsumowanie 309
CZĘŚĆ IV WZORCE PROJEKTOWE INTERFEJSU UŻYTKOWNIKA W SYSTEMIE ANDROID 311
Rozdział 17. Wprowadzenie do wzorców projektowych interfejsu użytkownika 313Wzorce projektowe interfejsu użytkownika 314Zalety stosowania wzorców projektowych interfejsu użytkownika 315Wzorce projektowe we wskazówkach projektowych platformy Android 316Wzorce projektowe interfejsu użytkownika prezentowane w tej książce 317Podsumowanie 319
Rozdział 18. Wzorce projektowe akcji użytkownika 321Stosowanie wzorca Action Bar 322Stosowanie wzorca projektowego Quick Actions 331Stosowanie wzorca projektowego szufl ady akcji 337Stosowanie wzorca projektowego Pull-to-Refresh 339Stosowanie gestu Swipe-to-Dismiss 343Podsumowanie 345
Rozdział 19. Wzorce projektowe nawigacji i układu 347Stosowanie wzorca projektowego Stacked Galleries 348Stosowanie kokpitu 350Stosowanie przestrzeni roboczych 354Stosowanie widoku dzielonego 358Stosowanie wzorca projektowego Expand -in -Context 360Stosowanie nawigacji bocznej 363Podsumowanie 366
Rozdział 20. Wzorce projektowe danych 367Stosowanie dynamicznych list 368Stosowanie wzorca projektowego Image Placeholder 370Stosowanie wzorca projektowego Non-forced Login 372Stosowanie wzorca projektowego Drag-to-Reorder Handle 375Podsumowanie 377
Kup książkę Poleć książkę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
7
SPIS TREŚCI
Rozdział 21. Antywzorce projektowe interfejsu użytkownika 379Unikaj ekranu ładowania 380Unikaj ekranu poradnika 381Unikaj stosowania okna potwierdzenia 383Unikaj przycisku Cofnij widocznego na ekranie 384Unikaj stosowania przycisku menu 385Unikaj ukrywania paska statusu 386Unikaj wyświetlania szybkich akcji gestem przewijania 387Unikaj stosowania rozwiązań projektowych spoza Androida 388Podsumowanie 389
Skorowidz 390
Kup książkę Poleć książkę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
Kup książkę Poleć książkę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
ROZD
ZIA
Ł 6
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� 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ę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
92
CZĘŚĆ II: FUNKCJE I KOMPONENTY INTERFEJSU UŻYTKOWNIKA PLATFORMY ANDROID
INTENCJE UMOŻLIWIAJĄ APLIKACJOM WZAJEMNĄ WSPÓŁPRACĘIntencja przypomina trochę technicznie i formalnie zde� 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� 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� czny, aplikację gra� 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).
Rysunek 6.1. Użytkownik robi zdjęcie za pomocą aplikacji aparatu fotogra� cznego AndroidaŹródło: Android
Kup książkę Poleć książkę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
93
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
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ÓWAplikacje 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ę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
94
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 � 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� cznych, edytorów tekstu. Z tego samego powodu użytkownicy nie są ściśle przywiązani do o� 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.
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� 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ę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
95
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.
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� ą przetworzyć adres URLŹródło: Android
PRACA Z PRZEGLĄDARKAMIPrzeglą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ę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
96
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.
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ę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
97
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 INTENCJIIstnieją 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.
Kup książkę Poleć książkę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
98
CZĘŚĆ II: FUNKCJE I KOMPONENTY INTERFEJSU UŻYTKOWNIKA PLATFORMY ANDROID
Interfejs pomiędzy tymi aplikacjami jest precyzyjnie zde� 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 INTENCJIW 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ę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
99
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).
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� niować zbiór powiązanych � ltrów intencji (zbiór intencji możemy zde� niować albo w pliku manifestu aplikacji, albo dynamicznie, w czasie wykonywania kodu). Intencja zawiera de� 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 � ltrami intencji wszystkich aplikacji i wybiera tylko pasujące aplikacje.
Kup książkę Poleć książkę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
100
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� niowane albo w formie identy� katora URI, albo jako typ MIME. Identy� kator URI składa się z dwóch części oddzielonych dwukropkiem. Pierwsza część de� niuje typ danych lub schemat. Druga część identy� kuje same dane. Na przykład identy� 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� niują wiele standardowych akcji, kategorii i kluczy dodatkowych danych. Te standardowe de� 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
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 Żąda wybrania numeru telefonicznego wskazanego w danych.
ACTION_EDIT Żą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 Żąda uruchomienia jako głównego punktu wejściowego (nie oczekuje żadnych danych).
ACTION_PICK Żą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ę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
101
ROZDZIAŁ 6: INTENCJE ANDROIDA
Nazwa akcji Opis akcji
ACTION_RUN Żą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 Żąda synchronizacji danych.
ACTION_VIEW Żąda wyświetlenia danych na ekranie urządzenia.
Tabela 6.2. Standardowe akcje rozgłaszania Androida
Nazwa akcji Opis akcji
ACTION_BATTERY_CHANGED Ta akcja jest regularnie rozgłaszana w celu przekazania stanu ładowania, poziomu naładowania i innych informacji na temat baterii urządzenia.
ACTION_BOOT_COMPLETED Ta akcja jest rozgłaszana tylko raz, bezpośrednio po uruchomieniu systemu.
ACTION_PACKAGE_ADDED 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� katora użytkownika.
Oprócz typu danych i akcji system operacyjny uwzględnia kategorię i � 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� niowanych � ltrów intencji.
Kup książkę Poleć książkę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
102
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 � 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� katory URI). Każda intencja może obejmować dodatkowe pola danych, które nie podlegają formalnej specy� 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 INTENCJIZ 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� niować � 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� niowania � ltra intencji z myślą o obsłudze adresów URI ze schematem geo. Schemat geo identy� katora URI jest formalną specy� kacją opisywania geolokalizacji.
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”.
Kup książkę Poleć książkę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
103
ROZDZIAŁ 6: INTENCJE ANDROIDA
W kodzie aktywności możemy odczytać geolokalizację dołączoną do intencji. W poniższym przykładzie identy� kator URI geolokalizacji jest odczytywany z danych intencji i wyświetlany w niezmienionej formie. W prawdziwej aplikacji należałoby przetworzyć identy� kator URI, aby na jego podstawie zdecydować o dalszych działaniach.
@Overrideprotected 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 AKCJINie musimy się ograniczać do standardowych, prede� 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� niowanych akcji. Zaleca się poprzedzanie akcji nazwą pakietu, aby uniknąć ich mylenia z akcjami de� niowanymi przez innych producentów oprogramowania i programistów.
Poniższy kod de� niuje � ltr intencji dla zde� 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ą.
Kup książkę Poleć książkę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
104
CZĘŚĆ II: FUNKCJE I KOMPONENTY INTERFEJSU UŻYTKOWNIKA PLATFORMY ANDROID
INTENCJE SĄ WSZĘDZIEW 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 � 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 � 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 APLIKACJIIntencje 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
Kup książkę Poleć książkę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
105
ROZDZIAŁ 6: INTENCJE ANDROIDA
Facebooka przypadkowej aplikacji? Czy dalibyśmy nieznanej aplikacji prawo publikowania wpisów na naszej tablicy na Facebooku?
PODSUMOWANIEMam 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 � 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).
Kup książkę Poleć książkę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
106
CZĘŚĆ II: FUNKCJE I KOMPONENTY INTERFEJSU UŻYTKOWNIKA PLATFORMY ANDROID
Kup książkę Poleć książkę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
390
SKOROWIDZ
112key, 226
AAble Remote, 174AccelerateDecelerateInterpolator,
209AccelerateInterpolator, 209Action Bar, 111, 162, 322ActionBarSherlock, 87, 330, 336,
358actionDone, 168actionGo, 168actionNext, 168actionNone, 168actionPrevious, 168actionSearch, 168actionSend, 168actionUnspecified, 168activity intents, 97AdapterViewFlipper, 133adjustPan, 163adjustResize, 163ADW Launcher, 69akcje
kategorie, 330aktualizacje starszych urządzeń, 72aktualizowanie aplikacji, 295aktywność, 83, 108
architektura, 292cykl życia, 114de� niowanie tybu wprowadzania
danych, 163fragmenty, 290inicjowanie, 108kontrola przepływu i układu, 293przykładowa aplikacja, 298, 305
dodatkowa aktywność, 307tryb adjustPan, 164tryb adjustResize, 164uruchamianie � agi intencji, 108wyzwalanie, 85zabijanie, 114zakończenie, 115
Aldiko, 351Amazon Android App Store, 74analiza przykładowej aplikacji, 296AnalogClock, 133Android
Action Bar, 24biblioteki tworzone przez
społeczność, 76cykl aktualizacji, 70diagram struktury, 82dokumentacja referencyjna, 88domyślna czcionka, 192domyślne komponenty tekstowe,
178działanie menu systemu, 24
ekran stanu baterii, 50ekrany domowe
widgety aplikacji, 123element sterujący
krzyżyk, 171elementy składowe aplikacji, 82fragmentacja, 62, 77framework
Android, 76układy, 83
gotowe animacje, 204Holo
aplikacja Tasks, 67ikony startowe, 200interfejs API, 66
de� niowanie akcji, kategorii i kluczy, 100
mechanizm animacji właściwości, 206
zapisywanie stanu aktywności, 114
interpretacjaintencji, 99stanów, 1911
jako open source, 75jądro Linuxa, 75klawiatura ekranowa, 162kolory domyślne, 195komponenty, 75
nawigacji, 108platformy, 82
licencja open source, 63łączenie z dodatkowymi
ekranami, 174Market, 67mody� kacja CyanogenMod, 69na tabletach, 71nieograniczoność instalowania,
73obrazy 9-patch, 253obsługa
gestów, 55urządzeń zewnętrznych, 172
o� cjalne wskazówki, 88otwartość na mody� kacje, 62pakiet Android SDK, 86platforma nowych możliwości,
61powiadomienia, 140
nadużywanie, 142poziomy API, 70praca nad bazą kodu, 76prede� niowane kwali� katory,
216projektowanie aplikacji, 48projekty bibliotek, 87różnorodność
urządzeń, 62, 63zastosowań, 62
skalowanie gra� ki, 184skórki OEM, 64
społeczność programistów, 76standardowe interpolatory, 209sterowanie urządzeniami
różnorodność sposobów, 159stosowanie animacji przejść, 120struktura, 82
projektu, 86system intencji, 91szablony
dla Pencil, 41projektowe, 38
szybkie wyczerpywanie baterii, 49
tablety a telefony, 64tryby kafelkowania, 261udostępnanie zasobów aplikacji,
93warunek zgodności, 66wersje, 70
a producenci urządzeń, 71statystyki popularności, 70
wygląd systemu w zależności od producenta, 64
zakładki, 24, 355Android ADT, 357Android Asset Studio, 42Android Browser, 104Android Compatibility Program, 63Android Design, 89Android Design Preview, 42Android Developers, 88Android Development Tools, 247Android SDK
emulatory, 285kontekstowy pasek akcji, 336obsługa wzorca projektowego
Action Bar, 330piksele niezależne od gęstości,
222Android-PullToRefresh, 341animacje
czas odtwarzania, 208dla widoków i ich treści, 205efekt spowalniania, 208interpolatory, 208klatki kluczowe, 208nadpisywanie, 204nadużywanie, 203obiektów, 207poklatkowe, 206przejść, 120stosowanie, 203trasnformacji, 205układu, 208właściwości, 207
na starszych urządzeniach, 207odtwarzanie, 208tworzenie, 207
zastępowania fragmentów, 292animatory, 207
SKOROWIDZ
Kup książkę Poleć książkę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
391
SKOROWIDZ
AnticipateOvershootInterpolator, 210
antywzorzec, 318, 379ekran ładowania, 380ekran poradnika, 381okno potwierdzenia, 383przycisk Cofnij, 384przycisk Menu, 385rozwiązania projektowe spoza
Androida, 388Swipe Overlay Quick Actions,
332szybkie akcje
gest przewijania, 387ukrywanie paska statusu, 386
APK, 73aplikacja
a serwisy społecznościowe, 93aktualizowanie danych, 128alternatywne sposoby
przeglądania treści, 97analiza zadań, 49autonomiczna, 54
a internetowa, 54bezpieczeństwo, 74de� niowanie person, 31dodawanie alternatywnych
zasobów, 216dopracowanie projektu, 38ekran początkowy, 115funkcje, 28
a cel użytkownika, 28hybrydowa, 54implementowanie żądanych
funkcji, 30informująca o błędach, 147instalowanie
bezpośrednie, 73czcionek, 192warunek, 73
intencje, 92interfejsy API, 104internetowa, 54
ograniczenia, 54intuicyjność, 22jakość, 19Javy, 40klienta poczty elektronicznej, 126kod
rysowanie, 265logowanie
błędy, 146nieobowiązkowe, 372
ładowanie, 380łatwość użycia, 22migracja, 294modułowość, 294obsługa komunikacji
wewnętrznej, 97odkrywanie problemów, 43o� cjalna dokumentacja, 88plik manifestu, 136pobieranie, 74pomoc dla użytkownika, 382
powiadamianie o zmianach w środowisku, 85
pozycja w sklepie, 75priorytety powiadomień, 156problemy w użytkowaniu, 22projekt ekranu, 231projektowanie
dla Androida, 48prototyp, 36przełączanie, 113przygotowanie projektu, 32samodostosowujący się projekt,
276statystyki rozkładu wersji, 72sterowanie głosowe, 172struktura, 36testowanie
rzeczywiste dane, 44transfer danych, 52
połączenia z siecią WiFi, 53statystyki, 52
tworzeniewybór funkcji, 72wybór wersji, 72
udostępnianie funkcji, 91umieszczanie w sklepach, 75uruchamianie, 114użyteczność, 19wersje zastępujące domyślną, 65widget, 124wielozadaniowość, 48wybór
obszaru działania, 29sklepu, 74
wywołująca, 97z perspektywy użytkownika, 21zachowanie spójności
z platformą, 24zamieszczanie w sklepach, 74zapamiętywanie stanu, 48zastąpienie
ekranu domowego, 67programu uruchamiania, 67
zerwanie połączenia, 51zmiana sieci, 51zużycie energii, 49
atrybutandroid:animateLayoutChanges,
208android:fillA� er, 206android:fillViewport, 245android:layout_gravity, 240android:layout_height, 244android:layout_width, 244android:orientation, 237android:shape, 258android:typeface, 193background, 190grawitacji, 240imeOptions, 168, 169nextFocusDown/Up/Le� /Right,
171onEditorActionListener, 169parentActivityName, 113previewImage, 134
scaleType, 185So� InputMode, 163textSize, 193weight, 237
Bback stack, 83Balsamiq, 40Beautiful Widgets, 124bezpieczeństwo aplikacji, 74biblioteka
animacje właściwości, 207serwis GitHub, 76zastosowanie we wzorcach
projektowych, 316bitmapy, 261
kafelkowaniemorror, 261repeat, 261
obiekty drawable, 261blog twórców Androida, 88błędy, 146
procesów synchronizacji, 148wymagające obsługi, 146zadania wykonywane w tle, 148związane z zadaniami
pierwszoplanowymi, 146BounceInterpolator, 210Bouncer, 74broadcast intents, 97budowa
aplikacji hybrydowych, 54prototypów, 36
Button, 133
Ccar, 227Catch notes, 373cele użytkownika, 26, 27
a funkcje aplikacji, 28identy� kacja, 27lista, 28
Chronometer, 133companion widget, 124Contextual Action Bar, 332Cupcake, 70cwac-endless, 370CyanogenMod, 77CycleInterpolator, 210czcionki, 192
dodawanie własnych, 192instalowanie, 192niestandardowe, 192
czujniki, 174położenia, 174ruchu, 174środowiskowe, 174
Ddate, 167datetime, 167DecelerateInterpolator, 211
Kup książkę Poleć książkę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
392
SKOROWIDZ
de� niowanieelementu fragment, 291� ltru intencji, 102gradientów, 260kolorów, 189minimalnej wielkości widgetu,
131obiektów drawable
wielowastwowych, 262obiektu koloru, 260person, 30prostokąta, 258skalowalnej wersji obrazu, 254własnego stylu tekstu, 197
density-independent pixels, 222design pattern, 313desk, 227diagnozowanie układów, 248diagram architektury informacji,
277Gmail, 277
dip, 222długie naciskanie, 334dodawanie
niestandardowych elementów gra� cznych do komponentu, 190
własnych czcionek, 192dokumentacja
Androida, 91dla programistów, 88referencyjna, 88
dołączona aplikacja, 14kod źródłowy, 16zgodność, 16
Donut, 70dopełnienia, 245, 259dostęp do gra� ki platformy, 203dostępność, 195dostosowywanie
komponentówautomatyczne, 288w wtrybie jeden do jednego,
287ruchomych ekranów, 286wyglądu tekstu, 191
dots per inch, 219dowód słuszności, 38dół rodzica, 233dp, 222dpad, 226D-pady, 170DPI, 219DragSortListview, 376Draw 9-patch, 256Droid, 192dynamiczna lista, 368
dostosowywanie do dużego ekranu, 369
odmiany, 369rozwiązywane problemy, 368skutki stosowania, 368
dynamiczny charakter treścipomieszczenie na ekranie, 361
dystrybucjaaplikacji, 73OEM, 64
EEclair, 70Eclipse, 40ekran
bezdotykowy, 161Dodaj nowy element, 280domowy, 65
alternatywa, 67, 69dodatkowe interfejsy API, 69siatka, 131widgety aplikacji, 86
dotykowyelastyczny, 161pojemnościowy, 160przewijanie, 244przyszłość, 161rezystancyjny, 160rodzaje, 160rysik, 171
dzielonyodmiany, 359
kokpitu, 350koloru i informacji o kolorze
przykładowa aplikacja, 300komunikatu, 370listy elementów, 278ładowania, 380
alternatywa, 381stosowanie, 381wyświetlanie, 380
łączenie, 285na pierwszym planie, 286opcjonalna treść, 287początkowy, 350poleceń głosowych, 172poradnika, 381
alternatywa, 382wady, 381
ruchomy, 286szczegółów elementu, 279technika ruchomych ekranów na
pierwszym planie, 286w kolumnach, 285wyboru koloru
przykładowa aplikacja, 298elastyczność, 283element
drawable, 179include, 246kształtu, 258layer-list, 262merge, 246potomny, 262RadioGroup, 181
Evernoteekran poradnika, 382
Ffill_parent, 244FLAG_ACTIVITY_CLEAR_TOP,
108, 118FLAG_ACTIVITY_NEW_TASK,
108FLAG_ACTIVITY_SINGLE_TOP,
108foldery struktury projektu, 86Format 9-patch, 252formatowanie
na podstawie kodu języka HTML, 196
fragmentacja, 62fragmenty, 83, 277, 290
a wersje platformy Android, 294architektura, 292dodawanie do układów, 291gwarancja elastyczności, 292implementowanie, 290izolowanie, 294metody cyklu życia, 290przykładowej aplikacji, 299stosy tylne, 292transakcje, 291, 292tworzenie, 290wywoływanie macierzystej
aktywności, 293zastępowanie, 291
animacje, 292FrameLayout, 132framework
wieloplatformowy, 54zarządzania zasobami systemu
Android, 215Froyo, 70funkcja
Cofnij, 383opcjonalna i wymagana, 72
Ggaleria, 189generalized densities, 220generowanie ikon, 42,198gesty, 55
długie naciskanie, 334dotykowe
obsługiwane w systemie Android, 56
ekran rezystancyjny, 160ekrany pojemnościowe, 160obsługa
funkcja opcjonalna, 72przez widget, 130
odkrywanie, 57rzucanie, 344, 354
krytyczne spojrzenie, 357wady, 387
szybkość reakcji aplikacji, 58wielodotykowe, 55wykrywanie, 58
GetJar, 74
Kup książkę Poleć książkę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
393
SKOROWIDZ
gęstośćekranu, 218
kwali� katory, 220w ustawieniach Androida, 219
nieskalowalne obrazy, 220niska, 220piksele niezależne, 221pikseli, 221
foldery kwali� katorów, 221kategorie, 220
superwysoka, 220średnia, 220TV, 220uogólniona, 220
Gigbeat, 22Gingerbread, 70gładzik, 170Gmail, 130
przycisk Cofnij, 383Go Launcher, 69Google I/O 2012, 360Google Now, 343Google Play, 74
fragmenty, 283pro� l programisty, 89rozszerzanie kontekstowe, 361wskazówki udostępniania
aplikacji, 89zamieszczanie aplikacji, 74złośliwe oprogramowanie, 74, 75
Google Play Music Player, 126, 333Google RSS Reader, 359Google TV, 272góra rodzica, 233gradienty, 260
de� nowaniekolorów, 260
liniowy, 260radialny, 252, 260rodzaje, 260sweep, 260
GridLayout, 132GridView, 133
Hhdpi, 220, 222Hierarchy Viewer, 248Holo, 66
ikony paska akcji, 201Holo light
ikony paska akcji, 201Honeycomb, 70, 71
animacje właściwości, 207fragmenty, 294kwali� katory wielkości ekranu,
224hosty widgetów, 123
IIce Cream Sandwich, 70IDE, 40identy� kacja
elementów listyikony, 202
zasobów konkretnych urządzeń, 216
identy� kator URI, 100schemat geo, 102
ikony, 197a tło, 200aplikacji, 323automatyczne skalowanie
obrazu, 198bezpośrednie referencje, 202dostęp do gra� ki, 203generowanie, 198gotowe, 332grupy, 198kopie w strukturze aplikacji, 202menu, 199na ekranie kokpitu, 350na liście, 202okien dialogowych, 202paleta Google, 200paska akcji, 200paska stanu, 201
źródła, 201platformy Android, 202reprezentujące akcje, 198startowe, 198
domyślnych aplikacji systemu Android, 200
typy, 198zakładek, 201
źródła, 201zestawy, 203znaczenie, 198
ImageButton, 133ImageView, 133implementacja
animacji poklatkowej, 206fragmentów, 283, 290gestów, 55gra� ki, 265intencji udostępniania zasobów,
94komponentów tekstowych
użycie miar skalowalnych, 212krzyżyków i gładzików, 170list
źródła, 188powiadomień na pasku statusu,
154referencyjna, 71samodostosowujących się
projektów, 277widgetu
aplikacji, 135logika i funkcja, 136wskazówki, 126
wzorcaAction Bar, 330Action Drawer, 339Dashboard, 353Drag-to-Reorder Handle, 376Dynamic Lists, 369Expand-in-context, 363Image Placeholder, 372Non-forced Login, 374
Pull-to-Refresh, 341Quick Actions, 336Side Navigation, 366Split View, 360Stacked Galleries, 350Swipe-to-Dismiss, 345Workspaces, 357
importowanieplików układu, 246
instalowanie aplikacji, 73integracja z serwisami
społecznościowymi, 94inteligentne akcesoria, 174intencje, 85, 91
a interfejsy API aplikacji, 104adres URL, 95, 97aktywności, 97, 100Androida
zasada działania, 97de� niowanie
kategoria domyślna, 101zbioru, 99
� ltry, 99akcje, 99, 100dane, 100kategorie, 99, 102
� agi kontrolne, 108, 117jawne, 85, 97lista wyboru aplikacji, 96mechanizm interpretacji, 95nawigacja w systemie, 108niejawne, 85, 97nowe zadania, 116oczekujące, 154otrzymywanie, 102otwieranie
ekranu domowego, 109linków dotkniętych, 95
platformy Android, 62powiadomienia, 108przykład wykorzystania, 92rozgłaszania, 97, 98, 101w systemie Android, 104wiązanie aplikacji
z przeglądarkami, 95widgetów, 129współpraca aplikacji, 92wysyłanie, 98wywoływanie, 98zalety stosowania, 98zintegrowanie powiadomień, 154źródła, 105
Intent.FLAG_ACTIVITY_NO_ANIMATION, 204
interfejs naturalny, 55interfejs użytkownika, 19
antywzorce projektowe, 379bezwzględne położenie
elementów, 230budowa przy użyciu fragmentów,
298de� niowanie na tematach
domyślnych, 66dodawanie fragmentów, 291dotykowy, 55, 57, 160
Kup książkę Poleć książkę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
394
SKOROWIDZ
dotykowy,nawigacja, 22rozszerzanie o nowe gesty, 58
efektywność, 20elastyczność, 292głosowy, 172gruntowna przebudowa, 295klawiatura, 163kolekcje widgetów, 83komponenty, 85, 177
gęstość ekranu, 219kontekst używania aplikacji, 48logiczność, 22łączenie obszarów stałych
i skalowalnych, 230na różnych platformach, 55obsługa i prezentowanie danych,
367opracowanie, 19powiadomienia, 140projekt
wskazówki, 89projektanci a programiści, 20projektowanie, 20
Android SDK, 41Balsamiq, 40model mentalny, 22narzędzia, 38, 42OmniGra� e, 38WireframeSketcher, 39znaczenie dla użytkownika, 48
przyciski, 179reagowanie na gesty, 58różnorodność urządzeń, 273samodostosowujący się
tworzenie, 285schematy, 36, 297sekcje, 283skalowalność, 64stosowane konwencje, 24struktury większe niż ekran, 244systemu Android
de� niowanie, 230uchwyt przeciągania, 375widgety, 178wizualne wskazówki, 22wzorce projektowe, 314zakładki, 355
automatyczne dostosowywanie, 288
stosowanie ikon, 201zamiennik obrazu, 371
interpolator, 208
JJelly Bean, 70, 71
animacje przejść, 121powiadomienia na pasku statusu,
155
Kkafelkowanie, 261
liniowe, 261radialne, 261
sweep, 261tryby, 261
kanwa, 265klasa
ActionMode, 336Android.R.anim, 204Canvas, 265Context, 290dziedzicząca
po klasie View, 265Fragment, 290FragmentActivity, 294FragmentManager, 291FragmentTransaction, 291Notification, 156Notification.Builder, 154, 156NotificationManager, 154ObjectAnimator, 207PendingInten, 154ResponsiveExampleActivity, 299układu, 247ViewGroup
dziedziczenie, 247ViewPager, 358
klatki kluczowe, 208klawiatura ekranowa, 163
element ScrollView, 163metody wprowadzania danych,
163niestandardowa, 170numeryczna, 166przycisk akcji, 167rodzaje, 68sposób wyświetlania, 163typ danych wejściowych, 166
klawiatura sprzętowa, 170kod
moduły fragmentów, 292stosowanie wielokrotne, 246
kod QRanaliza aplikacji, 296animacje poklatkowe, 206animacje układu, 208animacje właściwości, 207dopełnienia i marginesy, 245gradienty, 260grawitacja układu, 241importowanie plików układu,
247instalacja skanera, 15kafelkowanie, 262kokpit, 353kontekstowy pasek akcji, 332kształty, 258mody� kowanie typogra� i, 191nawigacja w systemie Android,
109obracanie obiektu drawable, 264obrazy 9-patch, 253otrzymywanie intencji, 102powiadomienia, 156przycisk akcji i opcje IME, 167rozszerzanie kontekstowe, 363rysowanie kształtu, 269transformacje, 205
tryb edycji pola tekstowego, 169typ danych wejściowych, 166układ liniowy, 239układ siatki, 243układ względny, 233uruchamianie, 15widgety interfejsu użytkownika,
178wielowarstwowy obiekt drawable,
263kokpit, 350
dostosowywanie do dużego ekranu, 352
krytyczne spojrzenie, 352miejsce powiadomień, 351odmiany, 352skutki stosowania, 351
kolory, 195, 260cieniowanie tekstu, 195de� niowanie, 189
zasobów, 189domyślne, 195konstrukcje składniowe kodu,
189stosowanie plików kolorów, 190
komponenty, 82de� niowanie wielkości, 244dostosowywanie
automatyczne, 288jeden do jednego, 287
EditText, 178, 179foldery, 86fragmenty, 283galerii, 189gra� czne
skalowanie, 251ImageView, 184, 256
wartości atrybutu scaleType, 185
interfejsu użytkownikaautomatyczne
dostosowywanie, 277kolejność na osi Z, 245konieczność ustawienia
wymiarów, 243kontrolki przybliżania, 185listy rozwijanej, 337mody� kowanie wyglądu
i sposobu obsługi, 189nadpisywanie oryginalnych
funkcji, 192odległości, 245parametry stanu, 190paska akcji, 323pola wyboru, 180porządek w ramach układu, 245przełączników, 179selektory, 190tekstowe, 191
znaczniki języka HTML, 196TextView, 178, 179VideoView, 186w układzie
liniowym, 237ramkowym, 239
Kup książkę Poleć książkę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
395
SKOROWIDZ
siatki, 242względnym, 233
włączników, 180wielokrotnego użytku, 37, 283wizualne prezentacje
narzędzia Androida, 265wyboru, 181wysuwanej szu� ady, 187względem komponentu
macierzystego, 234z możliwością klikania, 188zastępowanie, 288
komunikacjamiędzy aplikacjami i systemem,
92między fragmentem
a aktywnością, 293komunikaty
aplikacji Evernote, 140bez możliwości interakcji, 141o błędach, 146o krytycznych zdarzeniach, 142o nowych wiadomościach poczty,
141o zadaniach w tle, 143pasek statusu, 142serwisów społecznościowych,
149tosty, 141zadania wykorzystujące
połączenie sieciowe, 143zdarzenia, 145
konstruktorytworzenie obiektu paint, 267
kontener przewijania, 182, 244obszary skalowalne, 230
kontrelement kontrolny, 239kontroler mediów, 186kontrolka
przybliżania, 185nawigacyjna, 325widoku, 323
konwersjawielkości komponentu, 223
korzystaniez serwisów społecznościowych,
93krój pisma, 193krzyżyk, 170
de� niowanie kolejności aktywowania, 171
kształty, 257dodawanie dopełnienia, 259
kwali� katorydostępnej szerokości i wysokości,
225języka i regionu, 225kon� guracyjne, 216łączenie, 217najmniejszej szerokości, 224orientacji ekranu, 225poziomy API, 217proporcji ekranu, 225stacje dokujące, 227sterowanie urządzeniem, 226
tryb pracy urządzenia, 227wersji systemu operacyjnego, 227wielkość ekranu, 224zasobów
kategorie gęstości pikseli, 220kraj i region, 225
Lland, 225large, 224, 309layout, 83ldpi, 220, 222Lehtimäki Juhani, 9licencja
Apache, 76GPL, 75
LinearInterpolator, 211LinearLayout, 132Lint, 294lista, 187
elementy, 188, 277opcji
komponent wyboru, 181przewijane w poziomie, 189rozwijana, 181wydajność, 188zastępowanie widokiem siatki,
288ListView, 133long, 225
Łłączenie powiadomień, 153
Mmarginesy, 245match_parent, 244mdpi, 220, 222mechanizm
animacji właściwości, 206automatycznego pobierania
dodatkowych elementów, 368nasłuchiwania zdarzeń, 300podziału widoku na strony, 357,
358przewijania, 244rozgłaszania, 98slektora, 189sterowania
ekran dotykowy, 160menedżery
układów, 232, 249, 277zasobów, 216, 277
menu rozwijane, 333metoda
addToBackStack(), 292commit, 291drawArc, 265drawBitmap, 265drawCircle, 265drawColor, 265drawLines, 265drawRect, 265
drawText, 265getActivity, 290getFragmentManager(), 291invalidate(), 266onActivityCreated(), 290onCreateView(), 290onDraw, 266onDraw(Canvas)., 265OnScrollListener.onScroll, 370overridePendingTransition(), 204setColor, 306setCustomAnimations(), 292startActionMode, 337super, 265View.registerForContextMenu(),
337metody wprowadzania danych
tryby, 163model mentalny, 21
czytnika e-booków, 22kształtowanie, 22oczekiwania użytkowników, 24
moduł rozszerzeń, 40mody� kowanie
typogra� i, 191
Nnad, 234nakładka, 187
niestandardowa, 333navexposed, 226navhidden, 226nawigacja, 107
boczna, 314, 363dodatkowe funkcje, 364dostosowywanie do dużego
ekranu, 364krytyczne spojrzenie, 365skutki stosowania, 364
kontrolki, 109nie związana z aktywnościami,
118obsługa krzyżyka, 170udoskonalenie mechamizmów,
113widgety, 126
New Quick Actions 3D, 337Nexus, 71nger, 226nieobowiązkowe logowanie, 372
dostosowywanie do dużego ekranu, 374
konto demonstracyjne, 374krytyczne spojrzenie, 374skutki stosowania, 374
nieodwracalne operacjeokno potwierdzenia, 383
niestandardowy ROM, 76night, 227nodpi, 220, 221nokeys, 226nonav, 226normal, 168, 224Noti� cationCompat2, 157
Kup książkę Poleć książkę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
396
SKOROWIDZ
notlong, 225notnight, 227notouch, 226number, 167
Ooating screen, 286obiekt
Canvas, 265drawable
de� niowany w plikach XML, 257
podzielony na warstwy, 259złożony, 262
kafelkowanie, 261koloru, 260OnScrollListener, 370Paint, 266
obrazy9-patch, 252
generowane przez narzędzia gra� czne, 256
jako elementy potomne, 262narzędzie SDK, 256struktura, 253w kodzie aplikacji, 256właściwa interpretacja, 253
skalowanie i obracanie, 252, 263obsługa
marginesów, 133różnych gęstości pikseli, 198
obszarłączenie rodzajów, 230skalowalny, 230stały, 230
odbieranie intencji, 102oddalanie obrazu, 57odkrywanie gestów, 57odświeżanie, 340okna dialogowe, 142okno potwierdzenia, 383
alternatywa, 383stosowanie, 383wady, 383
określaniedocelowej grupy użytkowników,
30OmniGra� e, 38opcjonalna treść, 287open source, 63, 75
rozpowszechnianie oprogramowania, 63
środowisko, 62umowy licencyjne, 63
opisywanie geolokalizacji, 102orientacja ekranu, 225original equipment manufacturer,
64oś Z, 245otwarte interfejsy API, 66OvershootInterpolator, 211
Ppakiet
aplikacji, 73 obsługi przykładowej aplikacji,
308parametry stanu
specy� kacja, 191źródła, 191
pasek akcji, 162akcje kontekstowe, 322dodatkowe funkcje, 324dostępność, 327dostosowywanie do dużego
ekranu, 326dzielenie, 328ikony, 200interpretacja układu, 322intuicyjność ikon akcji, 327komponenty, 323kontekstowy, 332
alternatywa, 333dostosowywanie do dużego
ekranu, 335Gmail, 332implementacja, 336tryb, 329źródła, 332
logo � rmy, 322marka producenta, 323podzielony, 328, 329samodostosowujące się akcje,
330skutki stosowania, 324tworzenie motywów, 331wybór akcji, 329wysokość, 322wzorzec projektowy, 322zajmowana przestrzeń, 327
pasek postępu, 144, 182, 184oceny, 184poziomy, 184rodzaje prezentowanych
procesów, 184wirujący okrąg, 184wyszukiwania, 184
pasek stanuikony, 201
pasek statusuikony powiadomień, 151komponenty powiadomień, 152ukrywanie
antywzorzec, 386lepsze rozwiązanie, 386stosowanie, 386wady, 386
pasek tytułów, 354, 356Pencil, 41persona, 30
de� niowanie, 31test użytkownika, 43
phone, 167PhoneGap, 54piksele
niezależne od gęstości, 221
przykład konwersji, 222w kodzie aplikacji, 222wymiary komponentów, 244
niezależnie od skali, 223skalujące, 255
pixels per inch, 219platforma Android, 177
komponenty, 177wykorzystanie przez różne
urządzenia, 272Play Books, 22plik kon� guracyjny wigdetu, 135plik manifestu widgetu, 136plik zasobu, 86Plume, 94pod, 234podgląd widgetu, 134pole tekstowe, 168, 179
przycisk akcji, 167pole wyboru, 180
daty, 182liczby, 182
port, 225porządkowanie elementów, 239
ręczne, 375powiadomienia
anulowanie, 153automatycznie ukrywane, 141dla aktualnie realizowanych
zadań, 153dotknięcie, 154� aga trwających zadań, 153ikony, 152, 201inwazyjność, 140korygowanie, 153łączenie, 153na czas, 153na pasku statusu, 142, 144
elementy, 152implementacja, 154kryteria, 142optymalne wykorzystanie, 150treść, 151
o błędach, 146kryteria, 146podczas logowania, 146utrata połączenia sieciowego,
150zadań w tle, 148
o zdarzeniach, 145okna dialogowe, 142
unikanie, 149osadzone, 140priorytety, 156
de� niowanie, 156prostota komunikatu, 146przechodzenie do aplikacji, 117różnorodność metod, 139techniki, 140tosty, 141
mała inwazyjność, 148umiarkowanie, 149umożliwienie reakcji, 144wbudowane, 140, 145
zalety, 148
Kup książkę Poleć książkę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
397
SKOROWIDZ
wersja Jelly Bean, 155zasadność, 143, 148zgodność wsteczna, 157
poziomy API, 70wersje, nazwy i kody, 70
PPI, 219prezentowanie
strumienia lub kategorii treści, 348
priorytety powiadomień, 156Prixing, 363procesy zatwierdzania, 74program zgodności, 63ProgressBar, 133projekt
a rozwój urządzeń mobilnych, 51antywzorzec, 388aplikacji, 296
a strony internetowe, 274badanie opinii, 43bibliotek, 87, 217dostosowujący się, 64ekranu aplikacji, 231mody� kacji, 76strony internetowej, 274struktury, 86
folderów, 86komponentów, 86
testowanie przez użytkowników, 42
wprowadzanie zmian, 295wykorzystanie bibliotek, 87zamienniki dla elementów
systemu, 67projektowanie
aktywności instalacyjnej, 130animacje przejść, 121aplikacji
obsługa tabletów, 63architektura informacyjna, 32budowa prototypów, 36buforowanie i zapisywanie
danych, 52dla różnych urządzeń, 272dla urządzeń mobilnych, 48dla użytkowników, 26głosowego sterowania aplikacją,
172identy� kacja miejsca
przebywania, 116ikony startowej, 199interfejsu
gra� cznego, 247różne języki i regiony, 225różne wersje platformy, 226samodostosowujący się
projekt, 276tryby pracy urządzeń, 227użytkownika, 20
koncentracja na najważniejszych
zagadnieniach, 29na potrzebach, 27
koszty przesyłania danych, 52nawigacji, 108
nowe koncepcje, 32obsługi
czujników, 174dodatkowego ekranu, 174ekranu dotykowego, 160inteligentnych akcesoriów, 174klawiatur sprzętowych, 170klawiatury ekranowej, 162kontrolek urządzenia, 226krzyżyków i gładzików, 170przycisków sprzętowych, 161rysika, 171zewnętrznych klawiatur,
myszy, touchpadów, 172o� cjalne zalecenia projektowe, 88określenie grupy odbiorców, 30optymalizacja energii baterii, 49pasje użytkowników, 53pod kątem interfejsów
dotykowych, 55powiadomień, 140projekt wizualny, 32projektu, 314przycisku
Cofnij, 110, 118Up, 113
skórki OEM, 64struktura nawigacji, 107widgetów, 125
obsługa gestów, 130wielkość, 131zalecenia, 126zużycie baterii, 128
wielkość ekranu, 223wykrywanie gestów, 58wymagania sprzętowe, 49zapisywanie koncepcji, 36zasobów
gęstość pikseli, 218prototyp, 36
a implementowanie, 36dopracowanie, 38papierowy, 36
test użytkownika, 45przygotowanie
Android SDK, 41szczegółowy, 37
przeciągnięcie, 56, 58przeciągnij, aby odświeżyć, 339
dostosowywanie do dużego ekranu, 341
krytyczne spojrzenie, 341skutki stosowania, 341
przegląd plus szczegóły, 358przeglądarki
dla Androida, 95przejścia
do innych aplikacji, 116między aktywnościami, 120, 204
nadpisywanie animacji, 204między ekranami, 354, 358między widokami, 348rezygnacja, 204stosowanie, 203
przestrzenie robocze, 354
dostosowywanie do dużego ekranu, 356
krytyczne spojrzenie, 357skutki stosowania, 356
przesuwanie, 56, 58przetwarzanie wielozadaniowe, 113przewijanie, 244
widoku, 244przycisk, 179
akcji, 167, 323Dalej, 167Gotowe, 167opcje, 168
Cofnij, 110, 115, 204a Up, 112alternatywa, 110, 385antywzorzec, 384przejście do poprzedniego
ekranu, 119przerywanie operacji, 119wady, 384wskaźnik postępu, 119
gra� czny, 179Home, 109, 115Menu, 161
alternatywa, 385antywzorzec, 385wady, 385
opcji, 181przełącznika, 180sprzętowy, 161Up, 111, 325
reguły, 113przypadek użycia, 26przystosowanie aplikacji do
większego ekranu, 296publikowanie
adresu URL, 95obrazów, 92
puknięcie, 56i przytrzymanie, 57podwójne, 56
Pulse, 348
Qqwerty, 226
Rreakcja na gesty, 58RelativeLayout, 132responsive design, 64, 271Roboto, 192rodzaje intencji, 97ROM, 69rozciąganie, 56rozgłaszanie intencji, 85rozkład wersji systemu Android
statystyki, 70rozszerzanie
kontekstowe, 360dodatkowe funkcje, 362dostosowywanie do dużego
ekranu, 362skutki stosowania, 361
Kup książkę Poleć książkę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
398
SKOROWIDZ
rozszerzaniesekcji treści, 360
rozwiązania projektowe spoza Androida, 388stosowanie, 389wady, 388
rysik, 171sterowanie urządzeniem, 172
rysowaniekształtu
przykład, 266na kanwie, 265z poziomu kodu aplikacji, 265
rzucane widoki, 355rzucanie, 58
Ssamodostosowujący się projekt,
271, 2743D, 286ogólny proces budowy, 277przygotowywanie dla aplikacji
Androida, 276przykładowa aplikacja, 302smartfony i tablety, 282szacowanie stosunku kosztów do
korzyści, 285telefony, 277wzorce projektowe, 317zmiana układu komponentów,
275scalanie
plików układu, 246ScrollView, 244Seesmic, 94selektory, 190
dla obiektów drawable, 264tło dla komponentów, 190
siatka ekranu domowego, 131wielkość widgetów, 132
side loading, 73Side Navigation, 314skalowalność
wymiary minimalne, 275skalowanie
automatyczne, 220a odrębne zasoby, 220
gra� ki, 251niewystarczające, 272obrazów, 252, 263układy, 230zapobieganie, 221
skanowaniekodów QR
instalacja skanera, 15skórki OEM, 64sliding drawer, 187SlidingMenu, 366small, 224so input mode, 163Songkick, 351sp, 223spinner, 181społęczność programistów
Androida, 76
sprzęt, 62StackView, 133state_checkable, 191state_checked, 191state_enabled, 191state_focused, 191state_pressed, 191state_selected, 191state_window_focused, 191sterowanie głosowe, 172stos
galerii, 348dodatkowe funkcje, 348dostosowywanie do dużego
ekranu, 348skutki stosowania, 348
tylny, 83a nawigacja boczna, 363mody� kowanie działania, 108transakcje fragmentów, 292
stosowanieanimacji, 203efektów przejść, 203fragmentów na starszych
urządzeniach, 294ikon, 197obrazów 9-patch, 255
w kodzie, 256zasobów Androida, 216
strona rodzicalewa, 233prawa, 233
struktura nawigacji, 107statystyki ekranów, 221styl tekstu, 193
przykłady, 194stylus, 226swipe views, 355SwipeToDismiss-NOA, 345system operacyjny
interpretacja intencji, 99mechanizm wyszukiwania
zasobów, 217ograniczenia widgetów, 129piksele niezależne od gęstości,
222sposób wyświetlania
powiadomień, 156środowisko wielozadaniowe, 114właściwa interpretacja obrazów
9-patch, 253wymuszenie obsługi stosu aktyw,
108szczypanie, 56szu� ada akcji, 337, 338
dostosowywanie do dużego ekranu, 339
krytyczne spojrzenie, 339skutki stosowania, 338
szybkie akcje, 331długie naciśnięcie, 334dostosowywanie do dużego
ekranu, 335gest przewijania
alternatywa, 387
antywzorzec, 387wady, 387
kontekstowy pasek akcji, 332krytyczne spojrzenie, 335menu rozwijane, 333, 337niestandardowa nakładka, 333,
337skutki stosowania, 334
Ttapping, 55Tasks, 375techniczna wykonalność projektu,
38tekst
cieniowanie, 196dostęność, 195kolor, 195krój pisma, 193przezroczystość, 195skalowalność, 193styl, 193
de� nowanie dla całej aplikacji, 197
wielkość, 193domyślna, 194niezależna od gęstości, 223rekomendowana, 194
tematHolo, 66OEM, 64
test użytkownika, 43analiza wskazanych problemów,
44dobór uczestników, 43liczebność uczestników, 45neutralność organizatora, 44planowanie, 43prototyp papierowy, 45reakcja na wykryte problemy, 46scenariusze, 43
testowania funkcji, 44 znaczenie kontekstu korzystania,
45testowanie
aplikacji, 42prototypów, 41
text, 167textAutoComplete, 167textAutoCorrect, 167textCapCharacters, 167textEmailAddress, 167textMultiLine, 167textNoSuggestions, 167textPassword, 167textPersonName, 167textShortMessage, 167textUri, 167TextView, 133theming, 331time, 167Titanium Appcelerator, 54title strip, 354toast, 141TouristEye, 334
Kup książkę Poleć książkę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
399
SKOROWIDZ
trackball, 226transakcja, 291transformacje, 205
a animacje właściwości, 207problemy, 205
trybakcji, 329kontekstowego paska akcji, 329wprowadzania danych
klawiatura sprzętowa, 170tvdpi, 220Tweet Lanes, 94TweetDeck, 94Twitter, 368
aplikacja, 94tworzenie
animacji właściwości, 207fragmentów, 290gra� ki
łączenie obiektów w warstwę, 262
listy celów użytkownika, 28obiektu paint, 266samodostosowujących się
interfejsów, 285treści niezależnej od gęstości
pikseli, 221układów, 247własnej klasy, 192własnych akcji, 103zasobów gra� cznych
sposoby konwersji, 222typ danych wejściowych, 166typogra� a, 191
UUCD, Patrz user centered designuchwyt przeciągania
dostosowywanie do dużego ekranu, 376
odmiany, 376skutki stosowania, 375w celu ponownego
uporządkowania, 375udostępnianie zasobów, 92, 93układy, 83
de� niowanieobszarów, 230w kodzie, 232w plikach XML, 232 wielkości, 243
diagnozowanie, 248dodawanie fragmentów, 291grawitacja, 240importowanie plików, 246liniowe, 237
kierunek, 237menadżery, 232niestandardowe, 247przykładowa aplikacja, 302ramkowe, 239
plik układu, 303siatki
i tabel, 242kokpit, 353
systemu Android, 229w ramach układów, 232wielopanelowe, 359względne, 232
punkty zaczepienia, 233, 234ukrywanie akcji, 337UrlImageViewHelper, 372uruchamianie
kodów QR, 15przypadki użycia ikony startowej,
115urządzenia mobilne
gęstości ekranów, 219kontekst używania, 48mody� kacja domyślnych
kolorów systemu, 64obsługa sieci bezprzewodowych,
53ograniczenia, 48, 49połączenie z internetem, 51rodzaje ekranów, 221rozwój, 51specy� ka, 47tablety, 63
z systemem Android, 272zastosowanie widgetów, 128
wersje aplikacji domyślnych, 65urządzenia Nexus, 71user centered design, 26usługi, 85usuwanie
pojedynczych elementów, 343wersje Androida, 343
użytkownika powiadomienia, 142atrakcyjność widgetów, 137cele, 26grupy odbiorców, 30model mentalny, 21ocena animacji, 203ocena aplikacji, 26oczekiwania, 24odkrywanie gestów, 57pasja i zaangażowanie, 53potrzeby, 26przewidywanie skutków
aplikacji, 21przycisk Up, 112przyzwyczajenia, 24reakcja na błędy, 146stosowanie jednego komponentu
w aplikacjach, 324symulowanie zachowań aplikacji,
21żądania funkcji, 30
Vview pager, 357ViewFlipper, 133ViewPagerIndicator, 358ViewStub, 133
Wwalled garden, 73wersje kolorystyczne, 190wheel, 226widget
a zarządzanie pamięcią, 128aktualizacje na żądanie, 129aktualizowanie danych, 128aplikacji, 86, 123, 124
na ekranach domowych, 123O� , 125
bezpośrednie funkcje aplikacji, 126
de� niowanie minimalnej wielkości, 131
dodawanie przez użytkowników, 130
dostawca, 136godziny i daty, 182implemantacja, 135interfejsu użytkownika, 85, 178
mody� kowanie, 189jako element wspomagający
nawigację, 126komponenty, 133marginesy, 133mediów, 184obsługa gestów i interakcji, 130ograniczenia, 126, 129plik kon� guracyjny, 135podgląd, 134przestrzeń na siatce ekranu, 132skalowalny, 133skróty
przykłady, 127tablety, 128tekstowy, 178towarzyszący, 124układy, 135
i funkcje, 130i komponenty, 132
wielkość, 131zastosowanie marketingowe, 124zautomatyzowane aktualizacje,
129zbiór szablonów, 133
widokadaptera, 187dzielony, 358
dostosowywanie do małego ekranu, 359
skutki stosowania, 359kalendarza, 182podział na strony, 357
wielkośćekranu, 223
dostępna szerokość i wysokość, 225
kategorie, 223kwali� katory, 224najmniejsza szerokość, 224podział szczegółowy, 224proporcje, 225standardy rozdzielczości, 225
Kup książkę Poleć książkę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
400
SKOROWIDZ
wielkośćuogólniona, 223
tekstu, 193etykiety, 194
wielozadaniowość środowiska mobilnego, 48
WiFi, 53winamp, 338WireframeSketcher, 39włącznik, 180workspaces, 354wprowadzanie
danych tekstowych, 179wrap_content, 244wskazówki
dla akcji, 327dla wydawców aplikacji, 89projektowe, 89, 316
wzorzec Action Bar, 324wskaźnik ładowania danych, 240wtyczka, 40wybór rodzaju aplikacji, 54wyrównanie
dołu, 235góry, 235lewej strony, 235linii bazowej, 235
wyrzuć, aby usunąć, 343dodatkowe funkcje, 344dostosowywanie do dużego
ekranu, 344krytyczne spojrzenie, 345skutki stosowania, 344
wysuwana szu� ada, 187, 337wyśrodkowanie, 233
w pionie, 233w poziomie, 233
wywoływaniefunkcji platformy i aplikacji, 91
wyznaczanieminimalnej i maksymalnej
wielkości, 283wzorzec projektowy, 313
Action Bar, 322, 385dostosowywanie do dużego
ekranu, 326odmiany, 328rozwiązywane problemy, 322techniczna implementacja, 330wady, 327wskazówki projektowe, 324
Action Drawer, 337krytyczne spojrzenie, 339rozwiązywane problemy, 337techniczna implementacja, 339
akcji użytkownika, 321Contextual Action Bar, 332danych, 367Dashboard, 350
odmiany, 352rozwiązywane problemy, 350techniczna implementacja, 353
dostępność bibliotek, 316Drag-to-Reorder Handle, 375
rozwiązywane problemy, 375
techniczna implementacja, 376Dynamic Lists, 368
techniczna implementacja, 369Expand-in-context, 360
rozwiązywane problemy, 361techniczna implementacja, 363
Image Placeholder, 370, 381rozwiązywane problemy, 370techniczna implementacja, 372
interfejsu użytkownika, 314kategorie, 318nawigacji i układu, 347nazewnictwo, 318Non-forced Login, 372
rozwiązywane problemy, 372techniczna implementacja, 374
Overview Besides Details, 358przykładowe
aplikacje, 317kody, 318
Pull-to-Refresh, 339, 348dostosowywanie do dużego
ekranu, 341krytyczne spojrzenie, 341rozwiązywane problemy, 340skutki stosowania, 341techniczna implementacja, 341
Quick Actions, 331rozwiązywane problemy, 331techniczna implementacja, 336
Side Navigation, 363odmiany, 366rozwiązywane problemy, 363techniczna implementacja, 366
solidne podstawy, 315Split View, 358
rozwiązywane problemy, 358techniczna implementacja, 360
spójność platformy, 316Stacked Galleries, 348
rozwiązywane problemy, 348techniczna implementacja, 350
stosowanie, 314Swipe-to-Dismiss, 343
dodatkowe funkcje, 344rozwiązywane problemy, 343skutki stosowania, 344techniczna implementacja, 345
Workspaces, 354rozwiązywane problemy, 354techniczna implementacja, 357
wskazówki projektoweźródła, 316
zalety, 315
XXDA Developers, 76xhdpi, 220, 222xlarge, 224, 309
Zz lewej strony, 234z prawej strony, 234zadania, 109
instalacja aplikacjibłędy, 148
pierwszoplanowebłędy, 146
przechodzenie do nowej aplikacji, 116
realizowane w tle, 143sposoby powiadomień, 150ustawienie � agi dla
powiadomienia, 153wykonywane w tle
błędy, 148zakładki, 243, 354
aktywności, 357zamiennik
dla elementów systemu, 66klawiatury, 66obrazu, 370
dostosowywanie do dużego ekranu, 371
skutki stosowania, 371zamknięty ogród, 73zapobieganie skalowaniu, 221zarządzanie
przestrzenią dzielącą komponenty, 245
zasoby, 216algorytm wyboru, 217dla różnych gęstości ekranów,
219dla różnych rodzajów środowisk,
216gra� czne, 221nadpisywanie, 217odpowiednie foldery zasobów,
216procedura wyboru, 217projektowanie, 218
zatrzymywanie działających procesów, 119
zbliżanie obrazugesty, 57
zdarzenia, 145aktualnie wyświetlanego ekranu,
145wielokrotne
powiadomienia, 153znacznik czasowy
powiadomienia, 153zestawy ikon � rmy Google, 203zgodność wsteczna powiadomień,
157zmiana
ekranu domowegoskutki, 67
układuw zależności od urządzenia,
275zużycie baterii
operacje, 50zwężanie, 56zwijanie rozszerzonej treści, 362
Kup książkę Poleć książkę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
Kup książkę Poleć książkę
http:/helion.pl/rt/andruihttp:/helion.pl/rf/andrui
-
http://program-partnerski.helion.pl
-
06_smashing android_druk 01