1

我有一张动态壁纸,我只想让我的壁纸在纵向模式下工作。我可以做吗?

<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 。

4

1 回答 1

2

我对你的问题有点疑惑:默认情况下,动态壁纸通常保持锁定在纵向模式,以对应默认启动器的行为。你是说当你旋转手机时你的壁纸会自动切换到横向模式?如果是这样,请告诉我们:
1) 当您旋转手机时,您手机附带的动态壁纸(Polar Clock、Grass、来自 SDK 的 Cube 等)是否也会切换到横向模式?
2)您使用的是自定义启动器吗?旋转手机时,它的图标/小部件会旋转吗?
请告诉我们,我们会尽力提供帮助。:-)

编辑:我没有在黑白的任何地方清楚地看到这一点,但我的印象是,我们的动态壁纸通常受所使用的启动器的支配。如前所述,大多数设备都带有不响应方向变化的启动器,因此它们为您提供的表面也不响应。我知道一些自定义启动器确实会响应方向变化,但直到您对模拟器的启动器也有这种问题感到困惑时,我才意识到。我最好的猜测是你不能阻止自定义启动器(包括模拟器)旋转你的画布。但是,如果需要,您可以检测并补偿这一点。在 onSurfaceChanged 中,您可以检查您的宽度是否大于您的高度,如果是,您可以使用此处显示的技术查询方向:http://www.codeproject.com/KB/android/AndroidLiveWallpaper.aspx
然后,您可以在绘制之前将画布旋转回纵向模式,一切都应该很好。:-)

于 2011-05-10T14:53:46.323 回答