AppCompatActivity 相对于 ActionBarActivity 有何增强?

What's the enhancement of AppCompatActivity over ActionBarActivity?

android.support.v7.app.AppCompatActivity 已于昨天作为新功能添加到最新的 v7 支持库中。

据说 ActionBarActivity 已被弃用,取而代之的是新的 AppCompatActivity 并且 AppCompatActivity 是使用支持库操作栏的活动的基础 class特征。那么,AppCompatActivityActionBarActivity 有哪些新功能? AppCompatActivityActionBarActivity 有哪些改进? AppCompatActivity的优点是什么?有人可以提供一些样品吗?

PS:最让我吃惊的是android.support.v4.app.FragmentActivity扩展出来的AppCompatActivity是直接父class ActionBarActivity!我的意思是现在 ActionBarActivity 可以做 AppCompatActivity 可以做的任何事情,为什么 Android 会推出后者?

同时,我看到一篇博客 post 指出:“这不是从 ActionBarActivityAppCompatActivity 的重命名,[=26= 的内部逻辑] 可以通过 AppCompatDelegate” 获得,那么 AppCompat 的“ 内部逻辑 ” 是什么? AppCompatDelegate 可以做什么?有人可以 post 一些关于这个的代码吗?

以前进入 AppCompat 的唯一入口是通过现已弃用的 ActionBarActivity class。不幸的是,这迫使您使用一组 Activity 层次结构,这使得使用 PreferenceActivity 之类的事情变得不可能。

查看克里斯·贝恩斯的 support-libraries-v22-1-0 了解更多信息

主要是名称更改:ActionBarActivity 并没有真正描述它现在所做的一切。如果您愿意,可以安全地使用 ActionBarActivity。把它想象成一个符号链接。

android 支持库的最新版本 22.1 弃用了 ActionBarActivity,取而代之的是 AppCompatActivity,它承诺为所有设备带来单一一致的 ActionBar从 API 7 级及以上

开始

正如 Chris 所写,ActionBarActivity 的新弃用版本(扩展 AppCompatActivity class 的版本)可以安全地向后兼容 class。它的弃用只是提示您要求直接使用 new AppCompatActivityAppCompatActivity 是一个新的、更通用的实现,它在内部使用 AppCompatDelegate class。

如果您开始新的开发,那么您应该立即使用新的 AppCompatActivity class。如果您有机会更新您的应用程序,请将弃用的 ActionBarActivity 也替换为新的 activity。否则,您可以继续使用已弃用的 activity,并且在行为上完全没有区别。

关于 AppCompatDelegate,它允许您在 activity 中添加新的有色小部件,这既不是 AppCompatActivity 也不是 ActionBarActivity

例如,您从外部库继承了一个 activity,而外部库又 而不是 AppCompatActivity 继承,但您想要这个 activity 有有色材质小部件(视图)。要实现它,您需要在 activity 中创建 AppCompatDelegate 的实例,覆盖 activity 的方法,如 addContentView()setContentView() 等(参见 AppCompatDelegate javadoc 以获得完整的方法列表),并且在那些被覆盖的方法内部将调用转发给内部 AppCompatDelegate 实例。 AppCompatDelegate 将完成剩下的工作,您的 "old-fashion" activity 将是 "materialized".

AppCompatActivity被引入Android-SDKandroid发布以来支持appcompat库.

AppCompatActivity 是支持 v4 的 FragmentActivity 的直接子 class 和 ActionBarActivity 的直接父 class。

AppCompatActivity 是使用 支持库操作栏 功能的活动的基础 class。

当 运行 达到 API 7 级或更高 时,您可以将 ActionBar 添加到您的 activity 通过扩展此class 为您的 activity 并将 activity 主题设置为 Theme.AppCompat 或类似的主题。

至于支持 v7 appcompat 库,它增加了对 Action Bar 用户界面设计模式的支持。该库包括对 material 设计 用户界面实现的支持。

以下是 v7 appcompat 库中包含的一些关键 classes:

  • ActionBar - 提供用户操作栏的实现 接口模式。
  • AppCompatActivity - 添加一个应用程序 activity class 用作使用 支持库的活动的基础 class 操作栏 实施。
  • AppCompatDialog - 添加一个可以用作基础的对话框 class class AppCompat 主题对话框。
  • ShareActionProvider - 添加对标准化共享操作的支持 (例如电子邮件或发布到社交应用程序)可以是 包含在操作栏中。

下载 Android 支持库后 ,该库位于 /extras/android/support/v7/appcompat/ 目录中.

The AppCompat Support Library started with humble, but important beginnings: a single consistent Action Bar for all API 7 and higher devices. In revision 21, it took on new responsibility: bringing material color palette, widget tinting, Toolbar support, and more to all API 7+ devices. With that, the name ActionBarActivity didn’t really cover the full scope of what it really did.

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