2010-03-26 86 views
1

我有1.6版的Android应用程序 我把壁纸和显示在我的应用程序。 (我这样做编程通过活动呼吁getWallpaper())1.6上的动态壁纸android应用程序

当这种安装了2.1的手机,拥有动态壁纸,动态壁纸不是由getWallpaper()返回了,因为它只是返回一个可绘制,而动态壁纸可能是另一回事。

所以问题是,是否有可能在1.6应用程序的背景上显示动态壁纸?怎么样?

感谢

========================================= ===============================================

到目前为止,我还没有找到解决方案。 我加入这个以更好地理解这个问题

要明确:该应用程序是为1.6编写的,因此将在所有1.6及更高版本。问题是:我们可以编写一个1.6作为目标的应用程序,但如果它运行在2.1设备上支持动态壁纸?

感谢

回答

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);

}

else

{

//something else

}

3)构建使用2.1的应用程序。并在清单中设置uses-sdk android:minSdkVersion =“4”,所以它也运行在1.6

4)确保它可以在手机1.6和2.1上运行,因为既然你有两个SDK的调用,请确保你当你运行1.6时,不要调用2.1的方法,反之亦然。

感谢您的帮助

0

您是否尝试过使用Theme.Wallpaper作为活动的主题?这将手机的壁纸设置为活动的背景,并与动态壁纸配合使用。

+0

是的,我试过,但它说:错误:没有资源发现在给定的名字相匹配(在“主题”,值为“@android:风格/ Theme.Wallpaper”)。 因为Theme.Wallpaper在API 2.0开始 – 2010-03-26 16:19:49

1

2.1中增加了动态壁纸,因此试图在1.6(或2.0)设备上显示动态壁纸根本没有意义。

在2.0中添加了Theme.Wallpaper主题风格,这是作为在系统壁纸(活的或不活动)上放置活动(或窗口)的新官方方式。当然,既然这个出现在2.0中,你也不能在1.6中使用它。

在2.0之前,显示在系统壁纸之上的唯一方法是使用getWallpaper()来检索静态壁纸图像,并在您的UI中自己绘制它。这当然不能支持动态壁纸。

如果您想要在2.0版本以前的版本和更高版本的平台上显示壁纸中显示的应用程序,您需要检查android.os.Build中的API版本,并适当调整您的行为:初始化您的活动时,如果2.0或更高版本使用setTheme选择壁纸主题;否则,获取drawable并将其作为UI的背景。当使用壁纸主题时,您需要确保您的UI不会在其上绘制不透明的背景并将其覆盖。您可能还想尝试将Theme活动的主题设置为Theme.Translucent,以便在2.0或更高版本(在理想情况下您会使用Theme.Wallpaper也会为您提供适当的动画)获得更好的行为。

其实,你可以设想使用版本化的资源来制作自己的主题,根据平台版本(壁纸或传统主题)进行适当调整。不过,我从来没有尝试过这样做。

+0

我不认为他意味着他想要在1.6设备上展示它,他只是希望他的1.6版应用程序在2.1上运行时支持此应用程序设备。至少我是这样读的。 – 2010-03-26 19:44:28

+0

可能是这样,但在2.1中甚至没有支持。 – MrSnowflake 2010-03-26 19:52:54

+0

对,我不想在1.6上展示它。 我的意思是我有一个1.6的应用程序,当它运行在2.1上时,我想要显示liveWallpaper – 2010-03-26 20:14:55