księgarnia internetowa · przez użytkownika. warto zwrócić uwagę na aplikacje seesmic, plume,...

38

Upload: others

Post on 04-Jul-2020

0 views

Category:

Documents


0 download

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