0

我正在设计一个最小 SDK 为 9 且目标 SDK 为 18 的应用程序。我想在屏幕上显示一个时钟。所以我在布局中添加了一个 DigitalClock。我收到一条警告,说 API 17 中不推荐使用数字时钟。所以我添加了文本时钟。但是只有 API 17 及更高版本才支持 TextClock。如果在设备上找到的 SDK < 17,我应该怎么做才能显示数字时钟,如果找到的 SDK >= 17,我应该怎么做才能显示文本时钟?
我通过 XML 添加 DitialClock/TextClock,而不是在代码隐藏中。

4

3 回答 3

2

您必须了解术语“已弃用”并不意味着“无法使用”。如果您计划在未来维护您的代码,那么继续使用已弃用的 API/widget/whatever 并不是什么可怕的罪行,因为您可以稍后返回并修复问题。弃用的代码最终会变得不受支持,但实际发生可能需要几年的时间。

然而,更优雅的解决方案是通过代码添加您的时钟。通过这样做,您将能够根据用户检测到的 API 级别进行分支,如下所示:

int sdk = android.os.Build.VERSION.SDK_INT;

if(sdk < android.os.Build.VERSION_CODES.HONEYCOMB)
{
    // Code for users with API version Honeycomb or greater
}
else
{
    // Code for users with API versions prior to Honeycomb
}

您甚至可以提供两种布局并决定使用哪种布局来处理这种类型的逻辑。

于 2013-09-15T08:07:39.417 回答
0

如果您想在 xml 中执行此操作,您应该创建两个不同的布局,其中一个将包含数字时钟和另一个文本时钟。然后将它们放在适当的文件夹中,例如:/res/layout-v11 或 /res/values-v13

于 2013-09-15T08:02:56.590 回答
0

您可以制作自定义时钟视图类,并且在该类中您可以相应地识别 sdk 版本和时钟。然后在你的xml中使用你的视图。

于 2013-09-15T08:04:23.437 回答