Android屏幕导向处理问题



我正在研究Android Live Wallpaper应用程序,需要正确处理屏幕方向更改。

目前,我将onConfigurationChanged用于此目的(在此方法中,我需要更改LWP屏幕元素的坐标。我使用andengine)。一切在模拟器和我的测试电话上都可以正常工作,但是一些我的客户与 samsung Galaxy Note2(t03g) lg Thrill(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>

在我的实时壁纸中,处理方向更改,我使用 onConfigurationChange()方法检查方向更改,但是我对这2部电话没有任何直接的经验从来没有对他们抱怨。我的方法看起来像以下方式:

   @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"

 android:configChanges="orientation|screenSize"

注意:从Android 3.2(API级13)开始,"屏幕尺寸"当设备在肖像和景观之间切换时,也会发生变化方向。因此,如果要防止由于为API 13或更高的API开发时的方向变化(AS由Minsdkversion和TargetsDkversion属性声明),您必须包括"屏蔽"除了"方向"之外的价值价值。也就是说,你必须脱瓦Android:configchanges =&quot'entrientation | ScreenSize&quort。但是,如果您的应用程序目标是API级别12或更低,然后您的活动始终处理此配置自身(此配置更改)即使在Android 3.2或更高的设备)。

摘自http://web.archive.org/web/20120130201824/https://developer.android.com/guide/guide/topics/resources/runtime-changes.html-changes.html

最新更新