Что такое appcompatactivity в котлине

Activity, AppCompatActivity, FragmentActivity и ActionBarActivity: когда использовать что?

Итак, для уровня API 22 (с минимальной поддержкой уровня API 15 или 16), что именно я должен использовать как для размещения компонентов, так и для самих компонентов? Есть ли применение для всего этого, или я должен использовать один или два почти исключительно?

8 ответов

Я думал, что Activity больше не рекомендуется

Итак, для уровня API 22 (с минимальной поддержкой уровня API 15 или 16), что именно я должен использовать как для размещения компонентов, так и для самих компонентов? Есть ли применение для всего этого, или я должен использовать один или два почти исключительно?

Итак, учитывая ваш minSdkVersion в диапазоне 15-16:

Если вам нужен внешний вид материального дизайна, используйте AppCompatActivity

Если нет, но вам нужны вложенные фрагменты, используйте FragmentActivity

Если нет, используйте Activity

Нам нужно поговорить о базовых классах, которые они расширяют. Сначала мы должны понять иерархию суперклассов.

Все начинается с Context, который является суперклассом для всех этих классов.

Context следует за ContextWrapper или дополняет его

Теперь мы подошли к Activity

Нижестоящие классы могут расширяться, но они расширяются их внутренними подчиненными и обеспечивают поддержку конкретных API

При использовании этого класса вместо встроенной поддержки фрагментов и загрузчиков новой платформы необходимо использовать методы getSupportFragmentManager() и getSupportLoaderManager() соответственно, чтобы получить доступ к этим функциям.

Вы можете добавить ActionBar к своему действию при работе на уровне API 7 или выше, расширив этот класс для своего действия и установив тему действия на Theme.AppCompat или похожая тема

Что такое appcompatactivity в котлине. Смотреть фото Что такое appcompatactivity в котлине. Смотреть картинку Что такое appcompatactivity в котлине. Картинка про Что такое appcompatactivity в котлине. Фото Что такое appcompatactivity в котлине

Я ссылаюсь на эти два один, два

Здесь много путаницы, особенно если вы читаете устаревшие источники.

ActionBarActivity на мгновение был заменой класса Activity, потому что он упростил обработку ActionBar в приложении.

2019: используйте AppCompatActivity

Это рационально, учитывая:

Начиная с Android 3.0 (уровень API 11), все действия, использующие тему по умолчанию, имеют ActionBar в качестве панели приложения. Однако функции панели приложений постепенно добавлялись во встроенную панель ActionBar в различных версиях Android. В результате собственный ActionBar ведет себя по-разному в зависимости от того, какую версию системы Android может использовать устройство. Напротив, самые последние функции добавляются в версию панели инструментов библиотеки поддержки, и они доступны на любом устройстве, которое может использовать библиотеку поддержки.

По этой причине вам следует использовать класс Toolbar из библиотеки поддержки для реализации панелей приложений ваших действий. Использование панели инструментов библиотеки поддержки помогает гарантировать, что ваше приложение будет вести себя одинаково на самом широком диапазоне устройств. Например, виджет панели инструментов предоставляет возможности материального дизайна на устройствах под управлением Android 2.1 (уровень API 7) или более поздней версии, но встроенная панель действий не поддерживает материальный дизайн, если устройство не работает под управлением Android 5.0 (уровень API 21) или более поздней версии.

Общие инструкции по добавлению ToolBar:

Дополнительные сведения см. В направлениях документации. Они довольно понятны и полезны.

Activity FragmentActivity AppCompatActivity ActionBarActivity

Таким образом, использование AppCompatActivity всегда является правильным выбором. Различия между ними следующие:

Источник

Activity

Activity и жизненный цикл приложения

Жизненный цикл приложения

Все приложения Android имеют строго определенный системой жизненный цикл. При запуске пользователем приложения система дает этому приложению высокий приоритет. Каждое приложение запускается в виде отдельного процесса, что позволяет системе давать одним процессам более высокой приоритет, в отличие от других. Благодаря этому, например, при работе с одними приложениями Android позволяет не блокировать входящие звонки. После прекращения работы с приложением, система освобождает все связанные ресурсы и переводит приложение в разряд низкоприоритетного и закрывает его.

После запуска activity проходит через ряд событий, которые обрабатываются системой и для обработки которых существует ряд обратных вызовов:

Схематично взаимосвязь между всеми этими обратными вызовами можно представить следующим образом

Что такое appcompatactivity в котлине. Смотреть фото Что такое appcompatactivity в котлине. Смотреть картинку Что такое appcompatactivity в котлине. Картинка про Что такое appcompatactivity в котлине. Фото Что такое appcompatactivity в котлине

onCreate()

onStart

onResume

При вызове метода onResume activity переходит в состояние Resumed и отображается на экране устройства, и пользователь может с ней взаимодействовать. И собственно activity остается в этом состоянии, пока она не потеряет фокус, например, вследствии переключения на другую activity или просто из-за выключения экрана устройства.

onPause

onStop

В этом методе activity переходит в состояние Stopped. В этом состоянии activity полностью невидима. В методе onStop следует особождать используемые ресурсы, которые не нужны пользователю, когда он не взаимодействует с activity. Здесь также можно сохранять данные, например, в базу данных.

При этом во время состояния Stopped activity остается в памяти устройства, сохраняется состояние всех элементов интерфейса. К примеру, если в текстовое поле EditText был введен какой-то текст, то после возобновления работы activity и перехода ее в состояние Resumed мы вновь увидим в текстовом поле ранее введенный текст.

onDestroy

В целом переход между состояниями activity можно выразить следующей схемой:

Что такое appcompatactivity в котлине. Смотреть фото Что такое appcompatactivity в котлине. Смотреть картинку Что такое appcompatactivity в котлине. Картинка про Что такое appcompatactivity в котлине. Фото Что такое appcompatactivity в котлине

Управление жизненным циклом

Мы можем управлять этими событиями жизненного цикла, переопределив соответствующие методы. Для этого возьмем из прошлой главы класс MainActivity и изменим его следующим образом:

И при запуске приложения мы сможем увидеть в окне Logcat отладочную информацию, которая определяется в методах жизненного цикла activity:

Источник

Русские Блоги

Понимание активности и AppCompatActivity в Android

Я не знаю, обнаружили ли вы, что при использовании Eclipse для разработки приложений Android, при создании проекта MainActivity автоматически наследует Activity, а при использовании Android Studio для разработки приложений Android при создании проекта он автоматически наследует AppCompatActivity. Мы использовали Eclipse и AS для создания и запуска проекта и обнаружили, что унаследованный родительский класс отличается, но интерфейс такой же, как показано на следующем рисунке:

Что такое appcompatactivity в котлине. Смотреть фото Что такое appcompatactivity в котлине. Смотреть картинку Что такое appcompatactivity в котлине. Картинка про Что такое appcompatactivity в котлине. Фото Что такое appcompatactivity в котлине

Как видите, в верхней части интерфейса появится панель действий, а по умолчанию будет отображаться имя панели инструментов проекта. Ниже мы будем родительский класс в проекте AS Попробуйте заменить AppCompatActivity на Activity вручную.

Что такое appcompatactivity в котлине. Смотреть фото Что такое appcompatactivity в котлине. Смотреть картинку Что такое appcompatactivity в котлине. Картинка про Что такое appcompatactivity в котлине. Фото Что такое appcompatactivity в котлине

После запуска программы вы можете обнаружить, что верхняя часть ActionBar исчезла.Код наследует Activity, но интерфейс, который она запускает, действительно отличается. Таким образом, при создании проекта в AS AppCompatActivity наследуется автоматически.

Что такое appcompatactivity в котлине. Смотреть фото Что такое appcompatactivity в котлине. Смотреть картинку Что такое appcompatactivity в котлине. Картинка про Что такое appcompatactivity в котлине. Фото Что такое appcompatactivity в котлине

Что такое appcompatactivity в котлине. Смотреть фото Что такое appcompatactivity в котлине. Смотреть картинку Что такое appcompatactivity в котлине. Картинка про Что такое appcompatactivity в котлине. Фото Что такое appcompatactivity в котлине

Activity is the base class of all other activities, I don’t think it will be deprecated. The relationship among them is:

Activity FragmentActivity AppCompatActivity ActionBarActivity

‘ ActionBarActivity is deprecated, use AppCompatActivity instead.

So basically, using AppCompatActivity is always the right choise. The differences between them:

В Android 5.0 Панель инструментов заменила ActionBar, а ActionBarActivity была заменена на AppCompatActivity, тогда метод использования состоит в том, чтобы ввести настройки панели инструментов в Activity.

Практически для всех интерфейсов приложения требуется заголовок панели приложения. Чтобы упростить удобное использование каждого интерфейса и унифицированное управление, приведем простую инкапсуляцию панели инструментов.

Источник

Современная Android разработка на Kotlin. Часть 1

Данная статья является перевом статьи от Mladen Rakonjac

Очень сложно найти один проект, который охватывал бы всё новое в разработке под Android в Android Studio 3.0, поэтому я решил написать его. В этой статье мы разберём следующее:

Что такое appcompatactivity в котлине. Смотреть фото Что такое appcompatactivity в котлине. Смотреть картинку Что такое appcompatactivity в котлине. Картинка про Что такое appcompatactivity в котлине. Фото Что такое appcompatactivity в котлине

Каким будет наше приложение?

Наше приложение будет самым простым, которое охватывает все перечисленные выше вещи: у него будет только одна функция, которая извлекает все репозитории пользователя googlesamples из GitHub, сохраняет эти данные в локальной базе данных и показывает их пользователю.

Я попытаюсь объяснить как можно больше строк кода. Вы всегда можете посмотреть код, который я опубликовал на GitHub.

Android Studio

Чтобы установить Android Studio 3, перейдите на эту страницу

Android Studio 3 поддерживает Kotlin. Откройте Create Android Project. Там вы увидите новый флажок с меткой Include Kotlin support. Он выбран по умолчанию. Дважды нажмите кнопку Далее и выберите Empty Activity, затем нажмите Finish.

Поздравляю! Вы сделали первое приложение для Android на Котлине 🙂

Kotlin

Вы можете видеть MainActivity.kt:

Расширение .kt означает, что файл является файлом Kotlin.

MainActivity: AppCompatActivity() означает, что мы расширяем AppCompatActivity.

Кроме того, все методы должны иметь ключевое слово fun и в Котлине вам не нужно использовать ;, но вы можете, если хотите. Вы должны использовать ключевое слово override, а не аннотацию, как в Java.

Так что же означает ? в savedInstanceState: Bundle?? Это означает, что savedInstanceState может быть типа Bundle или типа null. Kotlin null безопасный язык. Если у вас есть:

вы получите ошибку компиляции, потому что a должна быть инициализированна и это не может быть null. Это означает, что вы должны написать:

Кроме того, вы получите ошибку компиляции, если вы это сделаете:

Чтобы сделать a nullable, вы должны написать:

Почему эта важная особенность языка Котлина? Это помогает нам избежать NPE. Разработчики Android уже устали от NPE. Даже создатель null, сэр Тони Хоар, извинился за изобретение. Предположим, что мы имеем nullable nameTextView. Если переменная равна null, то в следующем коде мы получим NPE:

Но Котлин, на самом деле, хорош, он не позволят нам делать даже такое. Он заставляет нас использовать оператор ? или оператор !!. Если мы используем оператор ?:

Строка будет исполнена только если nameTextView не null. В ином случае, если вы используете оператор !!:

Мы получим NPE если nameTextView null. Это для авантюристов :).
Это было небольшое введение в Kotlin. Когда мы продолжим, я остановлюсь, чтобы описать другой специфический код на Котлине.

2. Build Variants

В разработке часто вы имеете различные окружения. Наиболее стандартным является тестовое и производственное окружение. Эти среды могут отличаться в URL-адресах сервера, иконке, имени, целевом API и т.д. На fleka в каждом проекте у вас есть:

В этом приложении мы будем использовать всех их. У них будут отличаться applicationId и имена. В gradle 3.0.0 есть новый API flavorDimension, который позволяет смешивать разновидности продукта, так, например, вы можете смешать разновидности demo и minApi23. В нашем приложении мы будем использовать только «default» flavorDimension. Перейдите в build.gradle для приложения и вставьте этот код внутри android <>

Перейдите в strings.xml и удалите строку app_name, чтобы у нас не было конфликтов. Затем нажмите Sync Now. Если вы перейдете в Build Variants, расположенным слева от экрана, вы увидите 4 варианта сборки, каждый из которых имеет два типа сборки: Debug и Release. Перейдите к варианту сборки demoProduction и запустите его. Затем переключитесь на другой и запустите его. Вы должны увидеть два приложения с разными именами.

Что такое appcompatactivity в котлине. Смотреть фото Что такое appcompatactivity в котлине. Смотреть картинку Что такое appcompatactivity в котлине. Картинка про Что такое appcompatactivity в котлине. Фото Что такое appcompatactivity в котлине

3. ConstraintLayout

Если вы откроете activity_main.xml, вы увидите, что этот layout — ConstrainLayout. Если вы когда-либо писали приложение под iOS, вы знаете об AutoLayout. ConstraintLayout действительно похож на него. Они даже используют один и тот же алгоритм Cassowary.

Constraint помогает нам описать связи между View. Для каждого View у вас должно быть 4 Constraint, один для каждой стороны. В данном случае наш View ограничен родителем с каждой стороны.

Если вы передвинете TextView «Hello World» немного вверх во вкладке Design, во вкладке Text появится новая линия:

Что такое appcompatactivity в котлине. Смотреть фото Что такое appcompatactivity в котлине. Смотреть картинку Что такое appcompatactivity в котлине. Картинка про Что такое appcompatactivity в котлине. Фото Что такое appcompatactivity в котлине

Вкладки Design и Text синхронизируются. Наши изменения во вкладке Design влияют на xml во вкладке Text и наоборот. Vertical_bias описывает вертикальную тенденцию view его Constraint. Если вы хотите центровать вертикально, используйте:

Давайте сделаем чтобы наш Activity показал только один репозиторий. В нём будут имя репозитория, количество звезд, владелец, и он будет показывать, есть ли у репозитория issues, или нет.

Что такое appcompatactivity в котлине. Смотреть фото Что такое appcompatactivity в котлине. Смотреть картинку Что такое appcompatactivity в котлине. Картинка про Что такое appcompatactivity в котлине. Фото Что такое appcompatactivity в котлине

Чтобы получить такой layout, xml должен выглядеть так:

Пусть tools:text вас не смущает. Он просто помогает нам видеть хороший предварительный просмотр макета (layout’а).

Вы можете заметить, что наш макет плоский, ровный. Вложенных макетов нет. Вы должны использовать вложенные макеты как можно реже, поскольку это может повлиять на производительность. Более подробную информацию об этом вы можете найти здесь. Кроме того, ConstraintLayout отлично работает с разными размерами экрана:

Что такое appcompatactivity в котлине. Смотреть фото Что такое appcompatactivity в котлине. Смотреть картинку Что такое appcompatactivity в котлине. Картинка про Что такое appcompatactivity в котлине. Фото Что такое appcompatactivity в котлине

и мне кажется, что я могу добиться желаемого результата очень быстро.
Это было небольшое введение в ConstraintLayout. Вы можете найти Google code lab здесь, и документацию о ConstraintLayout на GitHub.

4. Библиотека привязки данных Data Binding

Когда я услышал о библиотеке привязки данных, первое вопрос, который я задал себе: «ButterKnife работает очень хорошо для меня. Кроме того, я использую плагин, который помогает мне получать View из xml. Зачем мне это менять?». Как только я узнал больше о привязке данных, у меня было такое же чувство, какое у меня было, когда я впервые использовал ButterKnife.

Как ButterKnife помогает нам?

ButterKnife помогает нам избавиться от скучного findViewById. Итак, если у вас 5 View, без Butterknife у вас есть 5 + 5 строк, чтобы привязать ваши View. С ButterKnife у вас есть 5 строк. Вот и всё.

Что плохо в ButterKnife?

ButterKnife по-прежнему не решает проблему поддержки кода. Когда я использовал ButterKnife, я часто получал исключение во время выполнения, потому что я удалял View в xml, и не удалял код привязки в классе Activity / Fragment. Кроме того, если вы хотите добавить View в xml, вам нужно снова сделать привязку. Это очень скучно. Вы теряете время на поддерживание связей.

Что насчёт библиотеки привязки данных?

Есть много преимуществ! С помощью библиотеки привязки данных вы можете привязать свои View всего одной строкой кода! Позвольте мне показать вам, как это работает. Давайте добавим библиотеку Data Binding в наш проект:

Обратите внимание, что версия компилятора Data Binding должна совпадать с версией gradle в файле build.gradle проекта:

Нажмите Sync Now. Перейдите в activity_main.xml и оберните ConstraintLayout тегом layout:

Обратите внимание, что вам нужно переместить все xmlns в тег layout. Затем нажмите иконку Build или используйте сочетание клавиш Ctrl + F9 (Cmd + F9 на Mac). Нам нужно собрать проект, чтобы библиотека Data Binding могла сгенерировать класс ActivityMainBinding, который мы будем использовать в нашем классе MainActivity.

Что такое appcompatactivity в котлине. Смотреть фото Что такое appcompatactivity в котлине. Смотреть картинку Что такое appcompatactivity в котлине. Картинка про Что такое appcompatactivity в котлине. Фото Что такое appcompatactivity в котлине

Если вы не выполните сборку проекта, вы не увидите класс ActivityMainBinding, потому что он генерируется во время компиляции. Мы все еще не закончили связывание, мы просто сказали, что у нас есть ненулевая переменная типа ActivityMainBinding. Кроме того, как вы можете заметить, я не указал ? в конце типа ActivityMainBinding, и я не инициализировал его. Как это возможно? Модификатор lateinit позволяет нам иметь ненулевые переменные, ожидающие инициализации. Подобно ButterKnife, инициализация привязки должна выполняться в методе onCreate, когда ваш Activity будет готов. Кроме того, вы не должны объявлять привязку в методе onCreate, потому что вы, вероятно, используете его вне области видимости метода onCreate. Наша привязка не должна быть нулевой, поэтому мы используем lateinit. Используя модификатор lateinit, нам не нужно проверять привязку переменной каждый раз, когда мы обращаемся к ней.

Давайте инициализируем нашу переменную binding. Вы должны заменить:

Вот и всё! Вы успешно привязали свои View. Теперь вы можете получить к ним доступ и применить изменения. Например, давайте изменим имя репозитория на «Modern Android Habrahabr Article»:

Как вы можете видеть, мы можем получить доступ ко всем View (у которых есть id, конечно) из activity_main.xml через переменную binding. Вот почему Data Binding лучше, чем ButterKnife.

Getter’ы и Setter’ы в Котлине

Возможно, вы уже заметили, что у нас нет метода .setText (), как в Java. Я хотел бы остановиться здесь, чтобы объяснить, как геттеры и сеттеры работают в Kotlin по сравнению с Java.

Во-первых, вы должны знать, почему мы используем сеттеры и геттеры. Мы используем их, чтобы скрыть переменные класса и разрешить доступ только с помощью методов, чтобы мы могли скрыть элементы класса от клиентов класса и запретить тем же клиентам напрямую изменять наш класс. Предположим, что у нас есть класс Square в Java:

Используя метод setA (), мы запрещаем клиентам класса устанавливать отрицательное значение стороне квадрата, оно не должно быть отрицательным. Используя этот подход, мы должны сделать a приватным, поэтому его нельзя установить напрямую. Это также означает, что клиент нашего класса не может получить a напрямую, поэтому мы должны предоставить getter. Этот getter возвращает a. Если у вас есть 10 переменных с аналогичными требованиями, вам необходимо предоставить 10 геттеров. Написание таких строк — это скучная вещь, в которой мы обычно не используем наш разум.

Kotlin облегчает жизнь нашего разработчика. Если вы вызываете

это не означает, что вы получаете доступ к a непосредственно. Это то же самое, что

в Java. Причина заключается в том, что Kotlin автоматически генерирует геттеры и сеттеры по умолчанию. В Котлине, вы должны указать специальный сеттер или геттер, только если он у вас есть. В противном случае, Kotlin автогенерирует его для вас:

field? Что это? Чтобы было ясно, давайте посмотрим на этот код:

Это означает, что вы вызываете метод set внутри метода set, потому что нет прямого доступа к свойству в мире Kotlin. Это создаст бесконечную рекурсию. Когда вы вызываете a = что-то, он автоматически вызывает метод set.
Надеюсь, теперь понятно, почему вы должны использовать ключевое слово field и как работают сеттеры и геттеры.

Вернемся к нашему коду. Я хотел бы показать вам ещё одну замечательную особенность языка Kotlin, apply:

apply позволяет вам вызывать несколько методов на одном экземпляре.

В Kotlin первичный конструктор является частью заголовка класса. Если вы не хотите предоставлять второй конструктор, это всё! Ваша работа по созданию класса завершена здесь. Нет параметров конструктора для назначений полей, нет геттеров и сеттеров. Целый класс в одной строке!

Вернитесь в класс MainActivity.kt и создайте экземпляр класса Repository:

Как вы можете заметить, для построения объекта не нужно ключевого слова new.

Теперь перейдем к activity_main.xml и добавим тег data:

Мы можем получить доступ к переменной repository, которая является типом Repository в нашем макете. Например, мы можем сделать следующее в TextView с идентификатором repository_name:

В TextView repository_name будет отображаться текст, полученный из свойства repositoryName переменной repository. Остается только связать переменную репозитория от xml до repository из MainActivity.kt.
Нажмите Build, чтобы сгенерировать библиотеку привязки данных для создания необходимых классов, вернитесь в MainActivity и добавить две строки:

Если вы запустите приложение, вы увидите, что в TextView появится «Habrahabr Android Repository Article». Хорошая функция, да? 🙂

Но что произойдёт, если мы сделаем следующее:

Отобразится ли новый текст через 2 секунды? Нет, не отобразится. Вы должны заново установить значение repository. Что-то вроде этого будет работать:

Но это скучно, если нужно будет делать это каждый раз, когда мы меняем какое-то свойство. Существует лучшее решение, называемое Property Observer.
Давайте сначала опишем, что такое паттерн Observer, нам понадобится это в разделе rxJava:

Возможно, вы уже слышали об androidweekly.net. Это еженедельный информационный бюллетень об Android разработке. Если вы хотите его получить, вам необходимо подписаться на него, указав свой адрес электронной почты. Позже, если вы захотите, вы можете остановить отказаться от подписки на своем сайте.

Это один из примеров паттерна Observer / Observable. В данном случае, Android Weekly — наблюдаемый (Observable), он выпускает информационные бюллетени каждую неделю. Читатели — это наблюдатели (Observers), они подписываются на него, ждут новых выпусков, и, как только они получают её, они читают её, и если некоторые из них решат, что им это не нравится, он / она может прекратить следить.

Property Observer, в нашем случае, представляет собой XML-макет, который будет прослушивать изменения в экземпляре Repository. Таким образом, Repository является наблюдаемым. Например, как только свойство name класса Repository изменяется в экземпляре класса, xml должен обновится без вызова:

Как сделать это с помощью библиотеки привязки данных? Библиотека привязки данных предоставляет нам класс BaseObservable, который должен быть реализован в классе Repository:

BR — это класс, который автоматически генерируется один раз, когда используется аннотация Bindable. Как вы можете видеть, как только новое значение установлено, мы узнаём об этом. Теперь вы можете запустить приложение, и вы увидите, что имя репозитория будет изменено через 2 секунды без повторного вызова функции executePendingBindings ().

Для этой части это всё. В следующей части я напишу о паттерне MVVM, паттерне Repository и об Android Wrapper Managers. Вы можете найти весь код здесь. Эта статья охватывает код до этого коммита.

Источник

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

Что такое appcompatactivity в котлине. Смотреть фото Что такое appcompatactivity в котлине. Смотреть картинку Что такое appcompatactivity в котлине. Картинка про Что такое appcompatactivity в котлине. Фото Что такое appcompatactivity в котлине

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

Что такое appcompatactivity в котлине. Смотреть фото Что такое appcompatactivity в котлине. Смотреть картинку Что такое appcompatactivity в котлине. Картинка про Что такое appcompatactivity в котлине. Фото Что такое appcompatactivity в котлине

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

Что такое appcompatactivity в котлине. Смотреть фото Что такое appcompatactivity в котлине. Смотреть картинку Что такое appcompatactivity в котлине. Картинка про Что такое appcompatactivity в котлине. Фото Что такое appcompatactivity в котлине

2 ответа 2

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.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *