Страницы

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

воскресенье, 14 апреля 2019 г.

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

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

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

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

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


Ответ

Класс 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.

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

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