2011-08-12 12 views
1

携帯電話とHoneycombタブレットで動作するAndroidアプリケーションを作成しています。行こう。非ハニカムデバイスでは、UIの容易さのためにすべてのアクティビティをポートレートにロックしています。同じことがハニカムのために行われ、UIとユーザーエクスペリエンスの改善のためにすべてがランドスケープに固定されます。Androidのベストプラクティス:オリエンテーションを開始してオリエンテーションを変更できないようにする方法

私は、書いたファイルブラウザ、いずれかのデバイスで使用したい、ダイアログアクティビティを現​​在のアプリケーションと同じ向きにするなど、ダイアログをテーマにしたアクティビティをいくつか持っています。したがって、ユーザーが電話を使用している場合、ダイアログはポートレートで表示され、ファイルを選択でき、アクティビティが消えてユーザーは続行されます。ハニカムデバイスを使用している場合、ダイアログアクティビティはランドスケープで表示され、同じルールが適用されます。

ただし、向きを動的に変更することはできません。ファイルブラウザの操作が画面に表示されている場合、基本的な操作でサポートされていないため、ユーザーはデバイスを回転することを許可されるべきではありません。

私はこれを達成するための提案を探しています。

答えて

5

AndroidManifestのアクティビティにandroid:configChanges="orientation"を追加して、向き変更を処理していることをOSに通知できます。通常は、onConfigurationChangedメソッドで何らかの処理を実装しますが、この場合は何もしません。

+0

これは私がまさに必要である、ありがとう! –

1

だけの思考、または動作しない場合があります。これが動作するかどうか

WindowManager wm = (WindowManager) activity 
     .getSystemService(Context.WINDOW_SERVICE); 
    Display display = wm.getDefaultDisplay(); 
    display.getRotation(); 
    Surface.setOrientation(display.getDisplayId(), display.getRotation()); 

は、参照してください:)