Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android
Code

Android od podstaw: jak korzystać z zasobów w aplikacji

by
Difficulty:BeginnerLength:MediumLanguages:
This post is part of a series called Android From Scratch.
Android From Scratch: Understanding Adapters and Adapter Views
Android From Scratch: How to Store Application Data Locally

Polish (Polski) translation by Mateusz Kurlit (you can also view the original English article)

Każda aplikacja, którą rozwijasz, zawiera w sobie różnego rodzaju lokalne zasoby i wartości, takie jak ciągi, obrazki (nawet jeśli to tylko ikona aplikacji) i kolory. W tym poradniku, nauczysz się jak korzystać z zasobów w systemie Android, aby wyświetlać treści użytkownikom, obsługiwać różne rozmiary ekranów i udostępniać wiele języków w aplikacji.

Łatwiej uczysz się za pomocą wideo? Obejrzyj nasz kurs:

1. Dodawanie zasobów do projektu

Kiedy tworzysz projekt w Android Studio, dostajesz dwa główne katalogi dla plików źródłowych, java i res. Tutaj res oznacza zasoby i jak sama nazwa wskazuje, zawiera zasoby dla projektu. W kontekście systemu Android, zasób jest plikiem przedstawiającym coś co może być wyświetlone na ekranie, plik układu dla klas lub wartość dostępna w aplikacji, jak ciąg lub kolor. W tej sekcji dowiesz się o różnych typach zasobów dostępnych w twojej aplikacji.

Typy zasobów

Aby skorzystać z zasobów w projekcie Android, musisz umieścić je podkatalogach znajdujących się w folderze res. Struktura katalogów zasobów standardowego projektu Android może wyglądać mniej więcej tak:

Example of A Resource Directory in Android

Istnieje ograniczona liczba nazw katalogów, które są obsługiwane przez system zasobów Androida, a ich znajomość jest konieczna do rozwijania aplikacji. Przyjrzyjmy się im bliżej.

  • animator: katalog zasobu animator może zawierać pliki XML definiujące animacje dla obiektów View w twojej aplikacji. Zamiast definiować animacje za każdym razem w kodzie Java, możesz importować plik XML animatora do każdego miejsca, w którym chcesz użyć określonej animacji.  Jeśli później zdecydujesz się zmienić tę animację, wystarczy, że zmienisz ją w jednej lokalizacji, a nie w wielu.
  • color: chociaż możesz zapisać kolory w katalogu values, katalog color jest używany do przechowywania plików XML, które kojarzą informacje o stanie z określonymi kolorami. To jest przydatne, gdy musisz zmienić kolor tekstu View lub tła po stuknięciu, aby dostarczyć informację zwrotną użytkownikowi.
  • drawable: Jeśli twoja aplikacji wymaga lokalnych obrazów takich jak pliki JPG i PNG, musisz umieścić je w folderze drawable. Tam również umieszczasz pliki XML, które definiują obiekty wektorowe i kształty lub obrazy narysowane w kodzie.
  • mipmap: podobny do drawable, katalog mipmap akceptuje elementy bitmapowe, ale w szczególności przechowuje ikonę aplikacji. To jest konieczne, ponieważ Android używa obrazów o jeden rozmiar większych niż te, które urządzenie zazwyczaj wykorzystuje do wyświetlania ikony aplikacji.
  • layout: katalog layout zawiera pliki XML, które wyświetlają interfejs użytkownika twojej aplikacji.
  • menu: pliki XML menu są używane do definiowania paska akcji, menu nawigacji i podmenu. Te zasoby znajdują się w katalogu zasobów menu.
  • raw: katalog raw przechowuje pliki surowe dla twojej aplikacji, takie jak pliki audio, wideo i tekstowe. To umożliwia łatwy dostęp do plików, jednakże jeśli chcesz uzyskać dostęp do oryginalnej nazwy pliku lub hierarchii katalogów, powinieneś rozważyć umieszczenie plików surowych w katalogu asset Androida.
  • xml: ten katalog przechowuje dowolne pliki XML używane przez Androida do wielu zadań, takich jak definiowanie konfiguracji wyszukiwania lub zewnętrznych funkcji, takich jak Android Auto.

Wartości

Mimo że powyższa lista dostępnych katalogów zasobów jest raczej długa, istnieje jeszcze jeden katalog o nazwie values, z którego będziesz często korzystał jako deweloper Androida. Katalog values może zawierać wiele plików XML składających się z prostych wartości, które są używane w twojej aplikacji:

  • arrays: proste obiekty tablic, które mogą być wczytane do twojej aplikacji.
  • colors: nazwane kolory, które mogą być użyte w wielu miejscach w twojej aplikacji.
  • dimens: rozmiary mogą określać cokolwiek związanego z rozmiarem w systemie Android, włącznie z tekstem i rozmiarem marginesu.
  • integers: jeśli istnieją konkretne liczby całkowite, które chcesz wykorzystać w swojej aplikacji, możesz umieścić je w pliku zasobu integers tak, aby można było łatwo je znaleźć i zmienić podczas tworzenia aplikacji.
  • strings: ciągi są potrzebne w każdej aplikacji na Androida, którą budujesz. Zamiast rozpraszać je w całej bazie kodu, możesz przechowywać ciągi w pliku strings.xml.
  • plurals: podobne do ciągów, plurals umożliwiają dostarczanie alternatywnych ciągów, gdy liczba jest przekazywana do funkcji wydobywania. Obsługuje sytuacje, w których kwantyfikator ciągu powinien się zmienić na podstawie liczby elementów, które reprezentuje.
  • styles: każda budowana przez ciebie aplikacja musi mieć spójny wygląd i to można osiągnąć za pomocą pliku styles.xml.  Dzięki stylom możesz nadpisać domyślny wygląd komponentów i uprzednio zdefiniować atrybuty związane z różnymi obiektami View w plikach układu.

Jak widzisz, struktura zasobów w systemie Android jest obszerna. Im dłużej będziesz rozwijał aplikacji, tym więcej dowiesz się o kolejnych sposobach wykorzystania plików zasobów i wartości tak, aby szybciej rozwijać i łatwiej zarządzać swoimi aplikacjami.

2. Dostęp do zasobów

Teraz, gdy już wiesz jak dodawać zasoby do aplikacji, musisz nauczyć się jak uzyskać do nich dostęp. Wszystkie zasoby przechowywane w twojej aplikacji posiadają identyfikowalną nazwę składającą się z typu zasobu, takiego jak drawable lub layout orad id w pliku R aplikacji. Plik R jest generowany przez narzędzie Android Asset Packaging lub aapt podczas kompilacji. Wygenerowana nazwa może być wykorzystana do uzyskania dostępu do zasobu w kodzie Java lub innym pliku XML.

Dostęp do zasobu w Java

Wiele obiektów w systemie Android jest zbudowanych z identyfikatorów zasobu, które akceptują jego id w celu wykorzystania danego zasobu. Przykładem tego jest ustawienie ImageView, aby korzystał z zasobu przekazując id do pliku R.

Podobnie obiekt MediaPlayer (używany do odtwarzania dźwięku i wideo) może odtworzyć surowy plik multimedialny przekazując id do pliku R.

Ponieważ duża liczba obiektów akceptuje id zasobu, zdarzają się sytuacje, w których chcesz odzyskać oryginalny zasób w swoim kodzie. Możesz to zrobić za pomocą metody getResources() dostępnej w obiekcie Context projektu Android. Zwraca ona obiekt Resources z wieloma metodami do uzyskania dostępu do lokalnych zasobów takich jak getColor() i getDrawable().

Dostęp do zasobów w XML

Przez większość czasu będziesz korzystał z zasobów znajdujących się w innych plikach XML. Definiowanie koloru, stylu, tekstu lub innego zasobu wykorzystywanego w różnych obszarach aplikacji, znacznie upraszcza zarządzanie pozwalając na zmianę jednej wartości i rozpowszechnienie jej w całej aplikacji. Na szczęście możesz uzyskać dostęp do zasobów w atrybucie XML przekazując id do pola, które oczekuje id zasobu.

3. Dostarczanie alternatywnych zasobów

Prawie każda aplikacja, którą budujesz, powinna obsługiwać różne rozmiary ekranów, konfiguracje i języki użytkownika. Dołączając szczególne kwalifikatory na końcu katalogu zasobu, system Android szereguje je według poziomu spełnienia określonych warunków.

Gęstość ekranu

Aby uniknąć pikselizacji, stworzone dla twojej aplikacji obiekty bitmapowe powinny być dedykowane dla konkretnych gęstości pikseli. Dołączając -ldpi-mdpi, -hdpi i inne kwalifikatory do nazw folderów, jak pokazano w przykładzie minimaps na początku artykułu, system Android wie, które obiekty wykorzystać na danym urządzeniu uruchamiającym twoją aplikację.

Języki użytkownika

Możesz stworzyć indywidualne katalogi wartości dla każdej języka wspierane przez twoją aplikację dołączając kod języka na końcu nazwy katalogu, na przykład values-fr dla francuskiego lub values-es dla hiszpańskiego.

Kiedy użytkownik ustawił jeden z tych języków, system zamienia wszystkie domyślne wartości na te w nowym katalogu zasobów. Przydatne podczas zmiany zasobów ciągów na właściwe tłumaczenie.

Obsługa tabletów i orientacji

Możesz dołączyć -land do katalogu zasobu, aby nadpisać domyślne wartości, gdy urządzenie znajduje się w pozycji poziomej. Możesz również zdefiniować minimalną szerokość urządzenia dla katalogu zasobu nadpisując domyślną w celu wspierania tabletów dołączając -sw600dp dla średnich tabletów (na przykład Nexus 7) i -sw720dp dla dużych tabletów.

Podsumowanie

Każda budowana przez ciebie aplikacja zawiera zasoby, dlatego wiedza na temat dostępu do nich i obsługi różnych konfiguracji urządzeń jest ważną częścią bycia deweloperem Androida. W tym artykule dowiedziałeś się jakiego rodzaju zasoby mogą znajdować się w aplikacji, jak uzyskać do nich dostęp w kodzie Java i XML oraz jak nadpisać zasoby w danych sytuacjach.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.