FloatingActionButton 示例在 Android Studio 中有效,但在 Eclipse 中无效

FloatingActionButton sample works in Android Studio but not in Eclipse

Eclipse-ADT 的长期用户,我已经开始研究 Android Studio,因为 Web 上的大多数示例现在都是使用 gradle 构建的。现在我最近刚刚在我的机器上安装了 Android Studio 并且正在尝试来自 developer.android.com 的示例,特别是这个:FloatingActionButton

我在 Android Studio 中导入了该项目,运行 它在我的 Nexus 5 上运行良好。 FAB 是圆形的并且有阴影等等。

出于好奇,我尝试在 Eclipse 中构建相同的项目。因此,我启动了 Eclipse,创建了一个新项目,将 Application 文件夹中的所有内容复制粘贴到适当的目标位置,然后 运行 同一设备上的项目。

按钮是方形的。

查看代码,以下几行负责为按钮赋予圆形形状,如下所示:

在FloatingActionButton.java

之下
setOutlineProvider(new ViewOutlineProvider() {
        @Override
        public void getOutline(View view, Outline outline) {
            outline.setOval(0, 0, getWidth(), getHeight());
        }
    });

setClipToOutline(true);

现在的问题是,为什么这些代码片段可以在 Android Studio 上运行,但不能在 Eclipse 上运行?

这很可能与您项目中的依赖项有关。

使用 Gradle,您可以为依赖版本号配置通配符,这意味着您的项目将始终拥有该库的最新版本(无论好坏)

对于 Eclipse-ANT,您很可能使用静态版本号的手动下载和导入库。您正在使用的特定版本正在编译方形按钮

终于成功了。问题是我从 Application/src/main 文件夹复制过来的 AndroidManifest.xml 没有最小 SDK 和目标 SDK 版本——两者都在 build.gradle 文件中定义,在/应用程序目录。我同时添加了这两个,现在 FAB 都被阴影包围了。

由于我不能给自己赏金,所以我会把赏金交给可以进一步解释的答案,或者至少指出记录此更改的内容。

现在,在 AndroidStudio 中,您可以在 build.gradle 中指定大部分清单配置,它将首先引用模块的 build.gradle 来进行此配置,这对许多人来说很有帮助并且是必需的我知道的事情如下。

Android studio 和 gradle 为您提供了许多新功能,其中之一是构建类型和风格,您可以使用它轻松地为您的一个项目创建新风格,请参阅 eclipse您需要为项目的另一种风格创建一个全新的项目,而在 android 工作室中,您可以在单个项目中完成。当您定义另一种风格时,您还可以定义一些仅适用于该风格的清单属性,例如您可以更改项目名称、包名称、最小 sdk、目标 sdk、版本、权限等。

只有一个清单,因此如果您声明多种口味并定义此类更改,build.gradle 文件将获取该更改并专门针对该口味应用于清单,以便您的清单得到更新为了那个味道。