livewallpaper问题中的肖像模式?

时间:2011-05-10 07:48:38

标签: android live-wallpaper

我有一张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。

1 个答案:

答案 0 :(得分:2)

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

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