Что является улучшением 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 и выше