支持较旧的API级别小部件

时间:2013-09-15 07:54:21

标签: android

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

3 个答案:

答案 0 :(得分:2)

您必须明白,“弃用”一词并不意味着“无法使用”。如果您计划将来维护您的代码,继续使用已弃用的API /小部件/其他任何东西都不是一件可怕的犯罪,因为您可以稍后返回并修复问题。不推荐使用的代码最终会变得不受支持,但实际发生之前可能需要几年时间。

然而,更优雅的解决方案是通过代码添加时钟。通过这样做,您将能够根据用户检测到的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
}

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

答案 1 :(得分:0)

如果你想在xml中这样做,你应该创建两个不同的布局,其中一个将使用数字时钟和另一个文本时钟。然后把它们放在适当的文件夹中,如:  / res / layout-v11或/ res / values-v13

答案 2 :(得分:0)

您可以创建自定义clockview类,在该类中,您可以相应地识别sdk版本和时钟。然后在xml中使用您的视图。