我有一张livewallpaper,我希望我的壁纸只能在纵向模式下工作。我可以这样做吗?
<application
android:label="@string/wallpaper_name"
android:debuggable="true"
android:screenOrientation="portrait"
android:icon="@drawable/icon">
<service
android:label="@string/wallpaper"
android:name=".LiveWallpaper"
android:permission="android.permission.BIND_WALLPAPER">
<intent-filter>
<action android:name="android.service.wallpaper.WallpaperService" />
</intent-filter>
<meta-data
android:name="android.service.wallpaper"
android:resource="@xml/weather_wallpaper" />
</service>
</application>
我试试这个,但它不起作用,因为应用程序标记中没有android:screenOrientation。
答案 0 :(得分:2)
我对你的问题感到有些困惑:默认情况下,动态壁纸通常在纵向模式下保持锁定状态,以对应默认启动器的行为。你是说在旋转手机时你的壁纸会自动转换为横向模式吗?如果这是真的,请告诉我们:
1)当您旋转手机时,手机附带的动态壁纸(Polar Clock,Grass,Cube from SDK等)是否会转换为横向模式?
2)您使用的是自定义启动器吗?旋转手机时,它的图标/小工具是否会旋转?
请告诉我们,我们会尽力提供帮助。 :-)
编辑:我没有看到这个在黑白两色中清楚地拼写出来,但我的印象是我们生活的壁纸通常受到使用的发射器的支配。如前所述,大多数设备都带有发射器,这些发射器不会对方向变化做出响应,因此它们给你的表面也不会。我知道一些自定义发射器确实会对方向变化做出响应,但直到模拟器发射器的问题出现问题我才意识到这一点。我最好的猜测是你不能阻止自定义启动器(包括模拟器)旋转你的画布。但是,如果需要,您可以检测并补偿此情况。在onSurfaceChanged中,您可以检查宽度是否大于您的高度,如果是,您可以使用此处显示的技术查询方向:http://www.codeproject.com/KB/android/AndroidLiveWallpaper.aspx
然后你可以在绘制之前将画布旋转回纵向模式,它应该都很好。 : - )