2012-12-24 117 views
5

我正在研究android动态壁纸应用程序,需要正确处理屏幕方向更改。Android屏幕方向处理问题

为此目的我使用onConfigurationChanged(在这种方法中,我需要更改我的LWP屏幕元素的坐标,我使用andengine)。一切工作正常的仿真器和我的测试手机,但一些我的客户与三星Galaxy Note2(t03g),LG激动(LGE LG-P925)报告在屏幕方向更改过程中不正确的应用程序工作的问题。

我手边没有这些电话,但可以假设该问题与onConfigurationChanged未被调用有关。

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

阿洛斯,我加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> 
+0

http://developer.android.com/guide/topics/resources/runtime-changes.html#HandlingTheChange –

回答

3

在我居住的壁纸,它处理方向的变化,我用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"

2
android:configChanges="orientation|screenSize" 

注意:与Android 3.2(API级13)中, “画面尺寸” 也改变开始时,该设备的开关纵向和横向之间 方向。因此,如果要在开发API级别13或更高级别(由minSdkVersion和targetSdkVersion属性声明的 )时为 方向更改而阻止运行时重新启动,则 除“方向”外还必须包含“screenSize”值为 。也就是说,你必须decalare android:configChanges =“orientation | screenSize”。但是,如果您的 应用程序的目标级别为12或更低,则您的活动始终会自行处理此配置更改(即使在更高版本的Android 3.2或更高版本的设备上运行此配置更改 也不会重新启动您的活动)。