我有一个版本为1.6的Android应用程序 我拿墙纸并在我的应用程序上显示它。 (我通过在Activity上调用getWallpaper()以编程方式执行此操作)
当这款手机安装在具有动态壁纸的2.1手机上时,getWallpaper()不会返回动态壁纸,因为它只返回Drawable,而动态壁纸可能是另一回事。
所以问题是,是否有可能在1.6应用程序的背景上显示动态壁纸?怎么样?
由于
=============================================== =========================================
到目前为止,我还没有找到解决方案。 我添加这个是为了更好地理解问题
要明确:该应用程序是为1.6编写的,因此它适用于所有1.6及更高版本。问题是:我们可以编写一个以1.6为目标的应用程序,但支持动态壁纸,如果它在2.1设备上运行?
由于
答案 0 :(得分:2)
我找到了解决方案:
1)使用android.os.Build.VERSION.SDK_INT检查手机的版本。 2)进行if / else调用,因此对于每个版本,您可以调用所需的方法。 在这种情况下:
if(android.os.Build.VERSION.SDK_INT> = 7){
this.setTheme(android.R.style.Theme_Wallpaper);
}
否则
{
//别的东西
}
3)使用2.1构建应用程序。并设置清单uses-sdk android:minSdkVersion =“4”所以它也运行在1.6
4)确保它适用于手机1.6和2.1,因为既然你有两个SDK的调用,请确保在运行1.6时不要调用2.1的方法,反之亦然。
感谢您的帮助
答案 1 :(得分:1)
2.1中添加了动态壁纸,因此尝试在1.6(或2.0)设备上显示动态壁纸是没有意义的。
在2.0中添加了Theme.Wallpaper主题样式,作为将活动(或窗口)置于系统壁纸之上(现场与否)的新官方方式。当然,由于这出现在2.0中,你也不能在1.6中使用它。
在2.0之前,在系统壁纸上显示的唯一方法是使用getWallpaper()来检索静态壁纸图像,并自己在UI中绘制它。这当然不能支持动态壁纸。
如果您想要在2.0及2.0及更高版本的平台上的壁纸中显示应用程序,则需要检查android.os.Build中的API版本,并适当调整您的行为:初始化活动时,如果2.0或更高版本使用setTheme选择壁纸主题;否则,获取drawable并使其成为UI的背景。使用壁纸主题时,您需要确保您的UI不会在其上绘制不透明背景并将其覆盖。您可能还想尝试将活动的主题设置为Theme.Translucent,以便在2.0或更高版本上获得更好的行为(理想情况下,您可以使用Theme.Wallpaper,它也可以为您提供正确的动画)。
实际上,您可以设想使用版本化的resouurces来制作您自己的主题,根据平台版本(壁纸或传统主题)进行适当调整。不过,我从未尝试过这样做。
答案 2 :(得分:0)
您是否尝试将Theme.Wallpaper
用作活动的主题?这将手机的壁纸设置为活动的背景,并与动态壁纸一起使用。