Android屏幕方向处理问题

时间:2012-12-24 19:58:18

标签: java android andengine screen-orientation live-wallpaper

我正在开发Android动态壁纸应用程序,需要正确处理屏幕方向的变化。

目前我使用onConfigurationChanged来实现此目的(在此方法中,我需要更改LWP屏幕元素的坐标。我使用andengine)。在模拟器和我的测试手机上一切正常,但我的一些客户使用三星Galaxy Note2(t03g) LG惊险(LGE LG-P925)报告问题不正确屏幕方向变化时的应用工作。

我手头没有这些手机,但可以认为问题与onConfigurationChanged未被调用有关。

使用onConfigurationChanged方法是否正确?也许我需要使用onSurfaceChanges或类似的东西?你能否告诉我解决这个问题的正确方法?

Alos,我已将android:configChanges="keyboardHidden|orientation"添加到AndroidManifest.xml

<activity
            android:name=".WallpaperSettings"
            android:configChanges="keyboardHidden|orientation"
            android:exported="true" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.PREFERENCE" />
            </intent-filter>
        </activity>

2 个答案:

答案 0 :(得分:3)

在我处理方向更改的动态壁纸中,我使用onConfigurationChange()方法检查方向更改,但我对这两部手机没有任何直接经验,但我从未收到任何投诉关于他们。我的方法看起来像是:

   @Override
   public void onConfigurationChanged(Configuration newConfig) {
       super.onConfigurationChanged(newConfig);

       // Checks the orientation of the screen  
       if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
         rotated = true;
       }
       else {
         rotated = false;
       }
   }

draw()方法中,我检查rotated布尔值。 onSurfaceChanged()中还有其他检查,以便在方向更改时更正分辨率更改。

我的清单文件中根本没有android:configChanges="keyboardHidden|orientation"

答案 1 :(得分:2)

 android:configChanges="orientation|screenSize"
  

警告:从Android 3.2(API级别13)开始,“屏幕大小”   当设备在纵向和横向之间切换时也会发生变化   取向。因此,如果您希望阻止运行时重新启动   开发API级别13或更高级别时的方向更改(如   由minSdkVersion和targetSdkVersion属性声明),你   除“方向”外,还必须包含“screenSize”值   值。也就是说,你必须decalare   机器人:configChanges = “方向|屏幕尺寸”。但是,如果你的   应用程序目标API级别12或更低,然后您的活动始终   处理此配置更改本身(此配置更改   即使在Android 3.2或Android上运行,也不会重新启动您的活动   更高的设备)。