Android assets (активи)
В Android є ще один каталог, в якому можуть зберігатися файли, що мають бути включені в пакет - assets. Цей каталог знаходиться на тому ж рівні, що і res. Для файлів, розташованих в assets. в R.java не генеруються ідентифікатори ресурсів. Для їх зчитування необхідно вказати шлях до файлу. Шлях до файлу є відносним і починається з / assets. Цей каталог, на відміну від підкаталогу res. дозволяє задавати довільну глибину підкаталогів і довільні імена файлів і підкаталогів.
За замовчуванням проект в студії не містить дану папку. Щоб її створити, виберіть меню File | New | Folder | Assets Folder.
читання файлів
Для доступу до файлів Assets використовується клас AssetManager. Приклад для читання текстового файлу:
Для доступу до графічного файлу з активу можна використовувати наступний код:
Ви також можете завантажити зображення в Bitmap. використовуючи BitmapFactory.decodeStream (). замість Drawable.
Використовуємо власні шрифти
Напишемо практичний приклад створення програми, в якому будуть використовуватися власні шрифти, які не входять в стандартну бібліотеку шрифтів Android. Для цього ми спакуємо потрібні шрифти разом з додатком. Помістимо в каталог assets / fonts файли шрифтів (можна завантажити безкоштовні шрифти з сайтів 1001 Free Fonts або Urban Fonts).
У файл розмітки додамо пару текстових полів з заготовленим текстом для виведення цього тексту з нашим шрифтом.
У класі активності завантажимо об'єкт EditText з ресурсів, а потім створимо об'єкт Typeface. використовуючи виклик статичного методу Typeface.createFromAsset (). Метод createFromAsset () приймає два параметри:
- об'єкт AssetManager. який можна отримати викликом методу getAssets ()
- шлях до файлу активу.
Наприклад, завантажити шрифт для текстового поля EditText можна в такий спосіб:
Запустивши проект, ми побачимо в текстових полях написи Happy New Year! і Meow !. виведені нашими власними шрифтами.
Приклад для фрагмента.
Завантаження локальних файлів з активів в WebView
Якщо потрібно завантажити локальні сторінки і зображення з активів в WebView, то можна використовувати префікс file: // android_asset. Детальніше дивіться в статті про WebView.
Отримуємо список файлів в папці assets
Можна отримати список файлів, які знаходяться в папці assets. Для швидкої перевірки коду я вручну скопіював в папку два файли:
Крім ваших файлів, також повертаються дивні папки / images. / Sounds. / Webkit. Враховуйте це в своїх проектах. Так як в папці можна створювати власні папки, то можна скористатися допоміжним методом:
Обмеження на розмір файлів
По мережі гуляє інформація, що існує обмеження в 1 Мб на розмір файлів в папці assets. При перевищенні розміру у вас може з'явитися помилка:
Я не стикався, тому рецепт вирішення проблеми не пропоную.