2012-12-24 114 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或更高版本的設備上運行此配置更改 也不會重新啓動您的活動)。