5

私はアンドロイドのライブ壁紙アプリケーションに取り組んでおり、画面の向きの変更を正しく処理する必要があります。

現在、私onConfigurationChangedはこの目的のために使用しています (この方法では、LWP 画面要素の座標を変更する必要があります。使用しますandengine)。エミュレーターとテスト用の電話ではすべて正常に動作しますが、Samsung 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>
4

2 に答える 2

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"マニフェストファイルにはまったくありません。

于 2012-12-24T20:17:52.153 に答える
2
 android:configChanges="orientation|screenSize"

注意:Android 3.2(APIレベル13)以降、デバイスが縦向きと横向きを切り替えると、「画面サイズ」も変化します。したがって、APIレベル13以上(minSdkVersionおよびtargetSdkVersion属性で宣言されている)で開発するときに方向の変更によるランタイムの再起動を防ぎたい場合は、「orientation」値に加えて「screenSize」値を含める必要があります。つまり、android:configChanges = "orientation|screenSize"をdecalareする必要があります。ただし、アプリケーションがAPIレベル12以下を対象としている場合、アクティビティは常にこの構成変更自体を処理します(Android 3.2以降のデバイスで実行している場合でも、この構成変更によってアクティビティが再開されることはありません)。

于 2012-12-24T20:14:26.580 に答える