11

私が書いたライブ壁紙の向きに問題があります。基本的に、キャンバスはその上で開いているアプリケーションに応じて回転します。これをテストしたところ、向きが変更された以前に開いていたアプリケーションからホーム画面に戻ると、onSurfaceChanged() メソッドが起動していることに気付きました。

より良い質問は、アプリケーションを開いて向きを変更すると、ライブ壁紙の表面が変わるのはなぜですか? ライブ壁紙の向きが変わらないようにする方法はありますか? ありがとうございます。

4

2 に答える 2

2

android.service.wallpaper.WallpaperService 内から画面の向きを処理できます。次のメソッドを持つエンジンクラス:

public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height)

...それに応じてイベントを処理するだけです。

android:configChangesandroid:screenOrientationを WallpaperService に追加することはできません。(ライブ壁紙作成時に使用しているもの)

これを「Anirudha」の回答へのコメントとして追加したかったのですが、そうするだけの評判がありません。

于 2014-10-27T20:00:31.730 に答える
1

向きが変わると、Android アプリケーションはアクティビティを再開します。どちらかを使用できます

  1. マニフェストのandroid:configChanges。実行時に構成の変更が発生すると、アクティビティはデフォルトでシャットダウンされて再開されますが、この属性を使用して構成を宣言すると、アクティビティが再開されなくなります。代わりに、アクティビティは実行されたままになり、そのonConfigurationChanged()メソッドが呼び出されます。
  2. android:screenOrientatin = " Portrait " または " Landscape " を使用すると、指定したモードでアプリが強制的に実行されます。ただし、アクティビティのシャットダウンと再開は妨げられません。
于 2013-01-13T11:14:06.313 に答える