reklama - zainteresowany?

Android. Programowanie aplikacji. Rusz głową! - Helion

Android. Programowanie aplikacji. Rusz głową!
ebook
Autor: Dawn Griffiths, David Griffiths
Tytuł oryginału: Head First Android Development
Tłumaczenie: Piotr Rajca
ISBN: 978-83-283-2066-6
stron: 712, Format: ebook
Data wydania: 2016-04-08
Księgarnia: Helion

Cena książki: 54,45 zł (poprzednio: 97,23 zł)
Oszczędzasz: 44% (-42,78 zł)

Dodaj do koszyka Android. Programowanie aplikacji. Rusz głową!

Tagi: Android

Android jest niezwykłym systemem. Dynamikę jego rozwoju i ekspansji można określić jednym słowem: oszałamiająca! Programiści, producenci urządzeń mobilnych, a przede wszystkim użytkownicy wysoko sobie cenią jego zalety, takie jak modułowa architektura, wysoka elastyczność czy otwarty charakter systemu. Liczbę urządzeń pracujących pod kontrolą Androida podaje się w miliardach, a przewiduje się, że będzie ich o wiele, wiele więcej. Umiejętność efektywnego pisania świetnych, atrakcyjnych aplikacji dla Androida staje się niezawodną receptą na sukces.

Książka, którą trzymasz w rękach, to podręcznik niezwykły, gdyż uwzględnia specyfikę funkcjonowania ludzkiego mózgu i sposób, w jaki najszybciej się uczy. Dzięki nowatorskiemu podejściu autorów nauka pisania aplikacji nie jest nudna: niepostrzeżenie będziesz nabierał coraz większej wprawy. Już w trakcie zapoznawania się z podstawowymi koncepcjami rozpoczniesz pracę w IDE Android Studio. Dowiesz się, jak zaprojektować strukturę aplikacji i jak zbudować idealny interfejs. Będziesz swobodnie posługiwał się aktywnościami, intencjami, usługami. Poznasz interfejs Material Design firmy Google, dowiesz się, jak wykorzystywać bazy danych SQLite. A to wszystko dopiero początek...

W tej książce między innymi:

  • omówienie zasad tworzenia aplikacji interaktywnych — odpowiadających na działania użytkownika,
  • przedstawienie świetnego narzędzia dla programistów — środowiska Android Studio,
  • opis koncepcji istotnych dla Androida: aktywności i ich cyklu życia, intencji, układów i fragmentów, usług i wielu innych,
  • wskazówki dotyczące tworzenia wyrafinowanych systemów nawigowania w aplikacji, korzystania z szuflad nawigacyjnych oraz z pasków akcji,
  • przedstawienie interfejsu Material Design,
  • omówienie ART — środowiska uruchomieniowego Androida i ADB, programu narzędziowego umożliwiającego rozwiązanie niektórych problemów podczas programowania i testowania aplikacji.

Rusz głową i zacznij pisać świetne aplikacje dla Androida!

Dodaj do koszyka Android. Programowanie aplikacji. Rusz głową!

Spis treści

Android. Programowanie aplikacji. Rusz głową! eBook -- spis treści

Wprowadzenie (xxiii)

  • Dla kogo jest przeznaczona ta książka? (xxiv)
  • Wiemy, co sobie myślisz (xxv)
  • Wiemy, co sobie myśli Twój mózg (xxv)
  • Metapoznanie - myślenie o myśleniu (xxvii)
  • Oto co MY zrobiliśmy (xxviii)
  • Przeczytaj to (xxx)
  • Zespół recenzentów technicznych (xxxii)
  • Podziękowania (xxxiii)

ROZDZIAŁ 1. Zaczynamy. Skok na głęboką wodę (1)

  • Witamy w Androidowie (2)
  • Platforma Android w szczegółach (3)
  • Środowisko programistyczne (5)
  • Zainstaluj Javę (6)
  • Stwórzmy prostą aplikację (8)
  • Aktywności z wysokości 15 tysięcy metrów (12)
  • Tworzenie aplikacji (ciąg dalszy) (13)
  • Tworzenie aplikacji (ciąg dalszy) (14)
  • Właśnie utworzyłeś swoją pierwszą aplikację na Androida (15)
  • Android Studio utworzy pełną strukturę katalogów aplikacji (16)
  • Przydatne pliki projektu (17)
  • Edycja kodu z użyciem edytorów Android Studio (18)
  • Uruchamianie aplikacji w emulatorze Androida (23)
  • Tworzenie wirtualnego urządzenia z Androidem (24)
  • Uruchomienie aplikacji w emulatorze (27)
  • Postępy możesz obserwować w konsoli (28)
  • Jazda próbna (29)
  • Ale co się właściwie stało? (30)
  • Usprawnianie aplikacji (31)
  • Czym jest układ? (32)
  • Plik activity_main.xml zawiera dwa elementy (33)
  • Plik układu zawiera odwołanie do łańcucha, a nie sam łańcuch znaków (34)
  • Zajrzyjmy do pliku strings.xml (35)
  • Weź swoją aplikację na jazdę próbną (37)
  • Twój przybornik do Androida (38)

ROZDZIAŁ 2. Tworzenie interaktywnych aplikacji. Aplikacje, które coś robią (39)

  • W tym rozdziale napiszemy aplikację Doradca piwny (40)
  • Utworzenie projektu (42)
  • Utworzyliśmy domyślną aktywność i układ (43)
  • Dodawanie komponentów w edytorze projektu (44)
  • Plik activity_find_beer.xml zawiera nowy przycisk (45)
  • Zmiany w kodzie XML układu... (48)
  • ...są uwzględniane w edytorze projektu (49)
  • Stosuj zasoby łańcuchowe, a nie łańcuchy podawane w kodzie (50)
  • Zmiana układu i zastosowanie w nim zasobów łańcuchowych (51)
  • Weź swoją aplikację na jazdę próbną (52)
  • Dodanie wartości do komponentu Spinner (53)
  • Dodanie do komponentu Spinner odwołania do string-array (54)
  • Jazda próbna komponentu Spinner (54)
  • Musimy zadbać o to, by przycisk coś robił (55)
  • Niech przycisk wywołuje metodę (56)
  • Jak wygląda kod aktywności? (57)
  • Dodaj do aktywności metodę onClickFindBeer() (58)
  • Metoda onClickFindBeer() musi coś robić (59)
  • Dysponując obiektem View, można odwoływać się do jego metod (60)
  • Aktualizacja kodu aktywności (61)
  • Pierwsza wersja aktywności (63)
  • Jazda próbna - test modyfikacji (65)
  • Tworzenie własnej klasy Javy (66)
  • Dodaj do aktywności wywołanie metody naszej klasy, aby była wyświetlana FAKTYCZNA porada (67)
  • Kod aktywności, wersja 2 (69)
  • Co się dzieje podczas wykonywania tego kodu? (70)
  • Jazda próbna - test aplikacji (71)
  • Twój przybornik do Androida (72)

ROZDZIAŁ 3. Wiele aktywności i intencji. Jakie są Twoje intencje? (73)

  • Aplikacja może zawierać więcej niż jedną aktywność (74)
  • Oto struktura naszej aplikacji (75)
  • Utworzenie projektu (75)
  • Utworzenie drugiej aktywności i układu (78)
  • Przedstawiamy plik manifestu aplikacji na Androida (80)
  • Użycie intencji do uruchomienia drugiej aktywności (83)
  • Co się dzieje po uruchomieniu aplikacji? (84)
  • Jazda próbna aplikacji (85)
  • Przekazanie tekstu do drugiej aktywności (86)
  • Aktualizacja właściwości widoku tekstowego (87)
  • Metoda putExtra() zapisuje w intencji dodatkowe informacje (88)
  • Aktualizacja kodu aktywności CreateMessageActivity (91)
  • Zastosowanie informacji przekazanych w intencji w klasie ReceiveMessageActivity (92)
  • Co się dzieje, gdy użytkownik kliknie przycisk Wyślij wiadomość? (93)
  • Jazda próbna aplikacji (94)
  • Jak działają aplikacje na Androida? (95)
  • Co się dzieje podczas działania kodu? (99)
  • Jak Android korzysta z filtrów intencji? (102)
  • Musisz uruchomić aplikację na PRAWDZIWYM urządzeniu (105)
  • Jazda próbna aplikacji (107)
  • Zmień kod, aby wyświetlać okno dialogowe (111)
  • Jazda próbna aplikacji (112)
  • Twój przybornik do Androida (114)

ROZDZIAŁ 4. Cykl życia aktywności. Była sobie aktywność (115)

  • Jak właściwie działają aktywności? (116)
  • Aplikacja stopera (118)
  • Kod układu aplikacji stopera (119)
  • Dodanie kodu obsługującego przyciski (122)
  • Metoda runTimer() (123)
  • Obiekty Handler umożliwiają planowanie wykonania kodu (124)
  • Pełny kod metody runTimer() (125)
  • Kompletny kod aktywności StopwatchActivity (126)
  • Obrót ekranu zmienia konfigurację urządzenia (132)
  • Od narodzin do śmierci: stany aktywności (133)
  • Cykl życia aktywności: od utworzenia do usunięcia (134)
  • W jaki sposób radzić sobie ze zmianami konfiguracji? (136)
  • Co się stanie po uruchomieniu aplikacji? (139)
  • Tworzenie i usuwanie to nie cały cykl życia aktywności (142)
  • Cykl życia aktywności: widzialny czas życia (143)
  • Zaktualizowany kod aktywności StopwatchActivity (147)
  • Co się dzieje podczas działania aplikacji? (148)
  • Jazda próbna aplikacji (149)
  • A co się dzieje, jeśli aplikacja jest tylko częściowo widoczna? (150)
  • Cykl życia aktywności: życie na pierwszym planie (151)
  • Zatrzymanie stopera w razie wstrzymania aktywności (154)
  • Kompletny kod aktywności (157)
  • Wygodny przewodnik po metodach cyklu życia aktywności (161)
  • Twój przybornik do Androida (162)

ROZDZIAŁ 5. Interfejs użytkownika. Podziwiaj widoki (163)

  • Trzy kluczowe układy: względny, liniowy i siatki (165)
  • Rozmieszczanie widoków względem układu nadrzędnego (168)
  • Rozmieszczanie widoków względem innych widoków (170)
  • Atrybuty do rozmieszczania widoków względem innych widoków (171)
  • RelativeLayout - podsumowanie (173)
  • Układ LinearLayout wyświetla widoki w jednym wierszu lub kolumnie (174)
  • Zmieńmy nieco prosty układ liniowy (176)
  • Dodawanie wagi do widoków (179)
  • Dodawanie wagi do większej liczby widoków (180)
  • Stosowanie atrybutu android:gravity - lista wartości (182)
  • Inne wartości, których można używać w atrybucie android:layout_gravity (184)
  • Kompletny układ liniowy (185)
  • LinearLayout - podsumowanie (186)
  • Układ GridLayout wyświetla widoki w siatce (189)
  • Dodawanie widoków do układu siatki (190)
  • Utwórzmy nowy układ siatki (191)
  • Wiersz 0: dodajemy widoki do określonych wierszy i kolumn (193)
  • Wiersz 1: tworzymy widok zajmujący komórki kilku kolumn (194)
  • Wiersz 2: tworzymy widok zajmujący komórki kilku kolumn (195)
  • Pełny kod układu siatki (196)
  • GridLayout - podsumowanie (197)
  • Układy i komponenty GUI mają wiele wspólnego (201)
  • Zabawy z widokami (205)
  • Twój przybornik do Androida (225)

ROZDZIAŁ 6. Widoki list i adaptery. Zorganizuj się (227)

  • Każda aplikacja zaczyna się od pomysłu (228)
  • Skategoryzuj swoje pomysły - aktywności: poziom główny, kategoria i szczegóły/edycja (229)
  • Nawigowanie po aktywnościach (230)
  • Użyj ListViews do nawigowania po danych (231)
  • Napiszemy aplikację kafeterii Coffeina (232)
  • Aktywność szczegółów napoju (233)
  • Struktura aplikacji dla kafeterii Coffeina (234)
  • Układ aktywności głównego poziomu składa się z obrazka i listy (238)
  • Kompletny kod układu aktywności głównego poziomu (240)
  • Zapewnianie reakcji ListView na kliknięcia za pomocą obiektu nasłuchującego (241)
  • Kompletny kod aktywności TopLevelActivity (243)
  • Jak utworzyć aktywność listy? (249)
  • Łączenie widoków list z tablicami za pomocą adaptera ArrayAdapter (251)
  • Dodanie adaptera ArrayAdapter do aktywności DrinkCategoryActivity (252)
  • Co się stanie po wykonaniu kodu? (253)
  • Jak obsługiwaliśmy kliknięcia w aktywności TopLevelActivity? (256)
  • Kompletny kod aktywności DrinkCategoryActivity (258)
  • Aktywność szczegółów wyświetla informacje o jednym rekordzie (259)
  • Wypełnienie widoków danymi (261)
  • Kod aktywności DrinkActivity (263)
  • Jazda próbna aplikacji (266)
  • Twój przybornik do Androida (268)

ROZDZIAŁ 7. Fragmenty. Zadbaj o modularyzację (269)

  • Struktura aplikacji Trenażer (273)
  • Klasa Workout (275)
  • Jak dodać fragment do projektu? (276)
  • Jak wygląda kod fragmentu? (278)
  • Przypomnienie stanów aktywności (282)
  • Cykl życia fragmentów (283)
  • Nasze fragmenty dziedziczą metody cyklu życia (284)
  • Jazda próbna aplikacji (286)
  • Jak utworzyć fragment typu ListFragment? (290)
  • Zaktualizowany kod klasy WorkoutListFragment (292)
  • Jazda próbna aplikacji (294)
  • Powiązanie listy z widokiem szczegółów (295)
  • Stosowanie transakcji fragmentu (301)
  • Zaktualizowany kod aktywności MainActivity (302)
  • Jazda próbna aplikacji (303)
  • Kod fragmentu WorkoutDetailFragment (305)
  • Struktury aplikacji na tablety i telefony (307)
  • Różne opcje katalogów (309)
  • Układ MainActivity dla telefonów (315)
  • Kompletny kod aktywności DetailActivity (319)
  • Zmodyfikowany kod aktywności MainActivity (321)
  • Jazda próbna aplikacji (322)

ROZDZIAŁ 8. Fragmenty zagnieżdżone. Zadbaj o potomstwo (325)

  • Tworzenie zagnieżdżonych fragmentów (326)
  • Kod fragmentu StopwatchFragment (332)
  • Układ fragmentu StopwatchFragment (335)
  • Metoda getFragmentManager() tworzy transakcje na poziomie aktywności (340)
  • Zagnieżdżone fragmenty wymagają zagnieżdżonych transakcji (341)
  • Kompletny kod fragmentu WorkoutDetailFragment (343)
  • Jazda próbna aplikacji (344)
  • Dlaczego kliknięcie przycisku powoduje awarię aplikacji? (345)
  • Przyjrzyjmy się kodowi układu StopwatchFragment (346)
  • Zaimplementuj we fragmencie interfejs OnClickListener (349)
  • Powiązanie obiektu nasłuchującego OnClickListener z przyciskami (351)
  • Kod fragmentu StopwatchFragment (352)
  • Jazda próbna aplikacji (354)
  • Kod fragmentu WorkoutDetailFragment (358)
  • Jazda próbna aplikacji (359)
  • Twój przybornik do Androida (364)

ROZDZIAŁ 9. Paski akcji. Na skróty (365)

  • Świetne aplikacje mają przejrzystą strukturę (366)
  • Różne typy nawigacji (367)
  • Zacznijmy od paska akcji (368)
  • Pakiet bibliotek Support Libraries (369)
  • Twój projekt może już używać bibliotek wsparcia (370)
  • Zadbamy, by aplikacja używała aktualnych motywów (371)
  • Zastosowanie motywu w pliku AndroidManifest.xml (372)
  • Definiowanie stylów w pliku zasobów stylów (373)
  • Określenie domyślnego motywu w pliku styles.xml (374)
  • Co się dzieje podczas działania aplikacji? (375)
  • Dodawanie elementów do paska akcji (376)
  • Plik zasobów menu (377)
  • Atrybut showAsAction menu (378)
  • Dodawanie nowego elementu akcji (379)
  • Utworzenie aktywności OrderActivity (382)
  • Uruchomienie aktywności OrderActivity po kliknięciu przycisku Złóż zamówienie (383)
  • Kompletny kod aktywności MainActivity (384)
  • Dzielenie się treściami z poziomu paska akcji (386)
  • Określanie treści za pomocą intencji (388)
  • Kompletny kod aktywności MainActivity (389)
  • Włączanie nawigacji w górę (391)
  • Określanie aktywności nadrzędnej (392)
  • Dodawanie przycisku W górę (393)
  • Jazda próbna aplikacji (394)
  • Twój przybornik do Androida (395)

ROZDZIAŁ 10. Szuflady nawigacyjne. Z miejsca na miejsce (397)

  • Zmiany w aplikacji dla restauracji Włoskie Co Nieco (398)
  • Szuflady nawigacyjne bez tajemnic (399)
  • Struktura aplikacji dla restauracji Włoskie Co Nieco (400)
  • Utworzenie fragmentu TopFragment (401)
  • Utworzenie fragmentu PizzaFragment (402)
  • Utworzenie fragmentu PastaFragment (403)
  • Utworzenie fragmentu StoresFragment (404)
  • Dodanie układu DrawerLayout (405)
  • Kompletna zawartość pliku activity_main.xml (406)
  • Inicjalizacja listy szuflady nawigacyjnej (407)
  • Zmiana tytułu paska akcji (412)
  • Zamykanie szuflady nawigacyjnej (413)
  • Zaktualizowany kod pliku MainActivity.java (414)
  • Stosowanie ActionBarDrawerToggle (417)
  • Modyfikowanie elementów paska akcji w trakcie działania aplikacji (418)
  • Zaktualizowany kod aktywności MainActivity (419)
  • Włączenie możliwości otwierania i zamykania szuflady nawigacyjnej (420)
  • Synchronizacja stanu przycisku ActionBarDrawerToggle (421)
  • Zaktualizowany kod aktywności MainActivity (422)
  • Obsługa zmian konfiguracji (425)
  • Reagowanie na zmiany stosu cofnięć (426)
  • Dodawanie znaczników do fragmentów (427)
  • Kompletny kod aktywności MainActivity (429)
  • Jazda testowa aplikacji (435)
  • Twój przybornik do Androida (436)

ROZDZIAŁ 11. Bazy danych SQLite. Odpal bazę danych (437)

  • Znowu w kafeterii Coffeina (438)
  • Android trwale przechowuje dane, używając baz danych SQLite (439)
  • Android udostępnia kilka klas związanych z SQLite (440)
  • Obecna struktura aplikacji kafeterii Coffeina (441)
  • Pomocnik SQLite zarządza Twoją bazą danych (443)
  • Pomocnik SQLite (443)
  • Tworzenie pomocnika SQLite (444)
  • Wnętrze bazy danych SQLite (446)
  • Tabele tworzymy w języku SQL (447)
  • Wstawianie danych za pomocą metody insert() (448)
  • Aktualizacja rekordów za pomocą metody update() (449)
  • Określanie wielu warunków (450)
  • Kod klasy CoffeinaDatabaseHelper (451)
  • Co robi kod pomocnika SQLite? (452)
  • Co zrobić, gdy trzeba będzie zmienić bazę? (455)
  • Bazy danych SQLite mają numer wersji (456)
  • Aktualizacja bazy danych - omówienie (457)
  • Jak pomocnik SQLite podejmuje decyzje? (459)
  • Aktualizacja bazy w metodzie onUpgrade() (460)
  • Przywracanie starszej wersji bazy za pomocą metody onDowngrade() (461)
  • Zaktualizujmy bazę danych (462)
  • Aktualizacja istniejącej bazy danych (465)
  • Zmiana nazwy tabeli (466)
  • Pełny kod pomocnika SQLite (467)
  • Kod pomocnika SQLite (ciąg dalszy) (468)
  • Co się dzieje podczas działania kodu? (469)
  • Twój przybornik do Androida (470)

ROZDZIAŁ 12. Kursory i zadania asynchroniczne. Nawiązywanie połączenia z bazą danych (471)

  • Aktualny kod aktywności DrinkActivity (474)
  • Określanie tabeli i kolumn (478)
  • Zapytania z wieloma warunkami (479)
  • Stosowanie funkcji SQL w zapytaniach (481)
  • Poruszanie się po kursorze (488)
  • Pobieranie wartości z kursora (489)
  • Kod aktywności DrinkActivity (490)
  • Dodanie ulubionych napojów do aktywności DrinkActivity (508)
  • Kod aktywności DrinkActivity (513)
  • Nowy kod aktywności głównego poziomu (518)
  • Zmodyfikowany kod aktywności TopLevelActivity (524)
  • Metoda onPreExecute() (531)
  • Metoda doInBackground() (532)
  • Metoda onProgressUpdate() (533)
  • Metoda onPostExecute() (534)
  • Klasa AsyncTask (535)
  • Kod aktywności DrinkActivity (537)
  • Twój przybornik do Androida (540)

ROZDZIAŁ 13. Usługi. Do usług (541)

  • Aplikacja z usługą uruchomioną (543)
  • Usługa IntentService z wysokości 15 tysięcy metrów (545)
  • Jak rejestrować komunikaty? (546)
  • Kompletny kod usługi DelayedMessageService (547)
  • Kompletny kod usługi DelayedMessageService (554)
  • Jak używać usługi powiadomień? (557)
  • Uruchamianie intencji przez powiadomienie (559)
  • Wysyłanie powiadomień za pomocą usługi systemowej (561)
  • Kompletny kod usługi DelayedMessageService (562)
  • Etapy tworzenia usługi Odometer (570)
  • Zdefiniowanie obiektu Binder (573)
  • Klasa Service ma cztery kluczowe metody (575)
  • Dodanie obiektu LocationListener do usługi (577)
  • Rejestracja obiektu LocationListener (578)
  • Kompletny kod usługi OdometerService (580)
  • Aktualizacja pliku AndroidManifest.xml (582)
  • Aktualizacja układu aktywności MainActivity (586)
  • Tworzenie obiektu ServiceConnection (587)
  • Powiązanie z usługą należy utworzyć podczas uruchamiania aktywności (588)
  • Wyświetlanie przebytego dystansu (589)
  • Kompletny kod aktywności MainActivity (590)
  • Twój przybornik do Androida (595)

ROZDZIAŁ 14. Material Design. W materialistycznym świecie (597)

  • Przedstawiamy Material Design (598)
  • Struktura aplikacji dla restauracji Włoskie Co Nieco (600)
  • Utworzenie widoku CardView (603)
  • Kompletny kod pliku card_captioned_image.xml (604)
  • Utworzenie prostego adaptera (606)
  • Zdefiniowanie obiektu ViewHolder na potrzeby adaptera (607)
  • Utworzenie obiektów ViewHolder (608)
  • Każdy widok CardView wyświetla zdjęcie i podpis (609)
  • Dodanie danych do widoków CardView (610)
  • Kompletny kod pliku CaptionedImagesAdapter.java (611)
  • Utworzenie widoku RecyclerView (612)
  • Dodanie widoku RecyclerView do układu (613)
  • Kod klasy PizzaMaterialFragment (614)
  • Do rozmieszczania zawartości RecyclerView używa menedżera układu (615)
  • Określanie menedżera układu (616)
  • Kompletny kod klasy PizzaMaterialFragment (617)
  • Zastosowanie fragmentu PizzaMaterialFragment w aktywności MainActivity (618)
  • Co się stanie po uruchomieniu kodu? (619)
  • Utworzenie aktywności PizzaDetailActivity (627)
  • Co musi robić aktywność PizzaDetailActivity? (628)
  • Aktualizacja pliku AndroidManifest.xml (628)
  • Kod pliku PizzaDetailActivity.java (629)
  • Obsługa kliknięć w widoku RecyclerView (631)
  • Dodanie interfejsu do adaptera (634)
  • Implementacja interfejsu Listener we fragmencie PizzaMaterialFragment (636)
  • Umieszczenie treści na samym początku (639)
  • Kompletny kod pliku układu fragment_top.xml (644)
  • Kompletny kod klasy TopFragment (645)
  • Twój przybornik do Androida (647)

Dodatek A. ART. Środowisko uruchomieniowe Androida (649)

Dodatek B. ADB. Android Debug Bridge (653)

Dodatek C. Emulator Androida (659)

Dodatek D. Pozostałości. Dziesięć najważniejszych zagadnień (których nie opisaliśmy) (663)

  • 1. Rozpowszechnianie aplikacji (664)
  • 2. Dostawcy treści (665)
  • 3. Klasa WebView (666)
  • 4. Animacje (667)
  • 5. Mapy (668)
  • 5. Mapy (ciąg dalszy) (669)
  • 6. Klasa CursorLoader (669)
  • 7. Odbiorcy komunikatów (670)
  • 8. Widżety aplikacji (671)
  • 9. Grafika 9-patch (672)
  • 10. Testowanie (673)

Skorowidz (674)

Dodaj do koszyka Android. Programowanie aplikacji. Rusz głową!

Code, Publish & WebDesing by CATALIST.com.pl



(c) 2005-2024 CATALIST agencja interaktywna, znaki firmowe należą do wydawnictwa Helion S.A.