Страницы

Поиск по вопросам

воскресенье, 2 февраля 2020 г.

Библиотека AppCompat - в чём же её преимущества?

#android #android_appcompat #android_app_compat_activity


У меня есть компонент Activity. Вот исходный код компоновки:



    



Минимальный требуемый уровень API у моего приложения - 16. Для создания Android-приложений
я использую среду программирования Android Studio.

В предварительном просмотре компоновка выглядит так:



то есть, шрифт Russo One успешно был задан элементу TextView (путь к файлу шрифта:
res\fonts\russo_one.ttf). Но на реальном телефоне всё выглядит иначе:



Проблема в том, что шрифт не задаётся элементу TextView. Я решил данную проблему
при помощи использования библиотеки AppCompat (com.android.support), а конкретно -
при помощи замены компонента Activity на AppCompatActivity, и тогда шрифт был успешно
задан элементу TextView.

Но теперь проблема заключается в другом. До использования библиотеки AppCompat моё
приложение весило ≈345 Кб. После того, как я добавил эту библиотеку в мой проект, приложение
стало весить 2,6 Мб — это почти в 8 раз больше. Подскажите, используют ли эту библиотеку
современные профессиональные программисты в своих Android-приложениях. В чём же заключается
суть использования этой библиотеки? В интернете нашёл не много информации о ней, многие
лишь утверждали, что она помогает сохранять красивый одинаковый стиль приложений на
более ранних версиях Android... У моего приложения я хочу задать минимальный требуемый
уровень API 15. Стоит ли мне в данном случае пользоваться этой библиотекой и если стоит,
то какими её преимуществами руководствоваться? Очень мало русскоязычных справочников,
документаций, форумов на эту тему в интернете я сумел найти.

Может быть, лучше скопировать только определённые нужные мне классы из библиотеки
AppCompat и вставить их в моё приложение? Ну, допустим, мне нужен только класс AppCompatActivity
в данном случае, его я и скопирую в моё приложение в отдельный пакет. Я не пользуюсь
классом, к примеру, FloatingActionButton, вот и не копировать его в моё приложение
вовсе. Не плохо ли поступить именно так со всеми классами этой библиотеки?
    


Ответы

Ответ 1



Класс Activity находится в стандартной библиотеке андроида на каждом девайсе. Засим не нужно подклчать к-л библиотеки для использования этого класса. Но в этом кроется главная проблема - эта библиотека обновляется только с обновлением ОС девайса, что происходит или редко или никогда. Таким образом использование Activity приведёт к тому, что на разных девайсах с разными версиями ОС (в т.ч. минорными) у вас будет разное поведение в разных местах, разные баги и большие проблемы с их воспроизведением и фиксом. И это не говоря о разном отображении одних и тех же элементов интерфейса. Засим следует всегда использовать библиотеку поддержки и класс AppCompatActivity - так у вас на всех девайсах всех возможных версий будет одна и та же версия классов и бороться вам надо будет в случае чего не со всем зоопарком версий, а только с одной. Ну и интерфейс будет везде одинаково выглядеть. Вот эта же инфа в документации (относительно использования Toolbar, но это относится и ко многим другим вещам, в частности к TextView, которое автоматически заменится на android.support.v7.widget.AppCompatTextView, в котором много улучшений и исправлений. В т.ч. со шрифтами): Beginning with Android 3.0 (API level 11), all activities that use the default theme have an ActionBar as an app bar. However, app bar features have gradually been added to the native ActionBar over various Android releases. As a result, the native ActionBar behaves differently depending on what version of the Android system a device may be using. By contrast, the most recent features are added to the support library's version of Toolbar, and they are available on any device that can use the support library. For this reason, you should use the support library's Toolbar class to implement your activities' app bars. Using the support library's toolbar helps ensure that your app will have consistent behavior across the widest range of devices. For example, the Toolbar widget provides a material design experience on devices running Android 2.1 (API level 7) or later, but the native action bar doesn't support material design unless the device is running Android 5.0 (API level 21) or later.

Ответ 2



Основная идея AppCompat в том, чтобы на старых устройствах поддерживать фичи введенные в более свежих API Ну за это приходится чем-то платить, понятно чем: тем что в состав приложения включаются либы, которые в более свежей версии находятся уже в составе ОСи В вашем случае это вылилось в лишние 2 мегабайта. Вы уж решите для себя или вам нужен красивый шрифт стоимостью 2 лишних мегабайта или остаетесь на 345 кб - решать вам. P.S. По мне 2 мб - это ни о чем, на дворе 21-й век и крохобориться из-за пары мегабайт как-то неприлично.

Комментариев нет:

Отправить комментарий