Что является улучшением AppCompatActivity по сравнению с ActionBarActivity?

android.support.v7.app.AppCompatActivity была добавлена ​​в последнюю версию библиотеки поддержки v7 как новая функция вчера.

Он сказал, что ActionBarActivity устарела в пользу нового AppCompatActivity и это AppCompatActivity является базовым классом для действий, которые используют функции панели действий библиотеки поддержки. Итак, каковы новые функции AppCompatActivity над ActionBarActivity? Какие улучшения делают AppCompatActivity иметь более ActionBarActivity? И каковы преимущества AppCompatActivity? Может ли кто-нибудь предоставить несколько образцов?

Любые советы приветствуются. И заранее спасибо.

PS: что меня больше всего удивило, так это то, что AppCompatActivity который продлен с android.support.v4.app.FragmentActivity является прямым родительским классом ActionBarActivity! Я имею в виду на самом деле сейчас, когда ActionBarActivity может сделать все, что AppCompatActivity может сделать, почему Android вытолкнул последний?

Тем временем я увидел сообщение в блоге, в котором говорится: " Это не переименование ActionBarActivity в AppCompatActivity внутренняя логика AppCompat доступно через AppCompatDelegate "Так что же такое" внутренняя логика " AppCompat? Что можешь AppCompatDelegate делать? Может ли кто-нибудь опубликовать некоторые коды об этом?

6 ответов

Решение

Как написал Крис, новая устаревшая версия ActionBarActivity (тот, расширяющийся AppCompatActivity class) является безопасным для использования классом обратной совместимости. Его устаревание является лишь подсказкой для вас, чтобы попросить использовать новые AppCompatActivity прямо вместо. AppCompatActivity это новая, более общая реализация, которая использует AppCompatDelegate класс внутри.

Если вы начинаете новую разработку, то вам лучше использовать новую AppCompatActivity класс сразу. Если у вас есть возможность обновить приложение, замените устаревшее ActionBarActivity по новой деятельности, а также. В противном случае вы можете остаться с устаревшей деятельностью, и в поведении не будет никакой разницы вообще.

относительно AppCompatDelegate, это позволяет вам иметь новые тонированные виджеты в деятельности, которая не является ни AppCompatActivity ни ActionBarActivity,

Например, вы наследуете действие от внешней библиотеки, которая, в свою очередь, не наследует от AppCompatActivity но вы хотите, чтобы в этом действии были виджеты с тонированными материалами (просмотры). Чтобы это произошло, вам нужно создать экземпляр AppCompatDelegate внутри вашей деятельности, переопределите методы этой деятельности, такие как addContentView(), setContentView() и т. д. (см. AppCompatDelegate javadoc для полного списка методов), и внутри этих переопределенных методов переадресация вызовов на внутренний AppCompatDelegate пример. AppCompatDelegate сделает все остальное, и ваша "старомодная" деятельность будет "материализована".

В основном это смена имени: ActionBarActivity на самом деле не описывает все, что делает сейчас. Вы можете безопасно использовать ActionBarActivity если хочешь. Думайте об этом как символическая ссылка.

Библиотека поддержки AppCompat начиналась с скромного, но важного начала: единой последовательной панели действий для всех устройств API 7 и выше. В редакции 21 он взял на себя новую ответственность: привнесение цветовой палитры материала, тонирование виджетов, поддержка панели инструментов и многое другое на все устройства API 7+. При этом имя ActionBarActivity на самом деле не охватывало всю сферу его деятельности.

http://android-developers.blogspot.it/2015/04/android-support-library-221.html

AppCompatActivity был введен в Android-SDK с момента выпуска библиотеки приложений для Android.

AppCompatActivity прямой дочерний класс FragmentActivity поддержки v4 и прямой родительский класс ActionBarActivity,

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

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

Что касается поддержки библиотеки appcompat версии 7, в нее добавлена ​​поддержка шаблона проектирования пользовательского интерфейса Action Bar. Эта библиотека включает поддержку реализаций пользовательского интерфейса дизайна материалов.

Вот несколько ключевых классов, включенных в библиотеку appcompat v7:

  • ActionBar - Обеспечивает реализацию шаблона интерфейса пользователя панели действий.
  • AppCompatActivity - Добавляет класс активности приложения, который можно использовать в качестве базового класса для действий, использующих реализацию панели действий библиотеки поддержки.
  • AppCompatDialog - Добавляет класс диалога, который можно использовать в качестве базового класса для тематических диалогов AppCompat.
  • ShareActionProvider - Добавлена ​​поддержка стандартного действия по обмену (например, электронной почты или публикации в социальных приложениях), которое можно включить в панель действий.

После загрузки библиотек поддержки Android эта библиотека находится в каталоге /extras/android/support/v7/appcompat/.

Ранее единственная точка входа в AppCompat был через сейчас устарел ActionBarActivity учебный класс. К сожалению, это вынудило вас использовать иерархию заданий, что делало PreferenceActivity невозможно.

см. chris banes's support-library-v22-1-0 для получения дополнительной информации

Последний выпуск библиотеки поддержки Android, 22.1, устарел ActionBarActivity в пользу AppCompatActivity, который обещает принести единый последовательный ActionBar для всех устройств, начиная с уровня API 7 и выше

Другие вопросы по тегам