約15のアクティビティを含むアプリケーションがあります。これで、アクティビティのローテーションを防ぐ 1 つの方法、つまりonConfigurationChanged()メソッドをオーバーライドして xml で定義する方法がわかりました。
私は約15〜20のアクティビティを持っているので、それぞれをオーバーライドすることはベストプラクティスではないと思います. これを行う他の方法はありますか?
これを確認してください。マニフェスト ファイルのタグ内のこの属性は、activity
向きを制限したい場合に驚くほど機能します。参考までに、以下は非常に重要です。
注: 横向きまたは縦向きの値のいずれかを宣言すると、アクティビティが実行される向きの厳しい要件と見なされます。そのため、宣言する値によって Google Play などのサービスによるフィルタリングが有効になり、アクティビティに必要な向きをサポートするデバイスでのみアプリケーションを利用できるようになります。たとえば、「landscape」、「reverseLandscape」、または「sensorLandscape」のいずれかを宣言すると、横向きをサポートするデバイスでのみアプリケーションを使用できます。ただし、アプリケーションが要素に対して縦向きまたは横向きのいずれかを必要とすることも明示的に宣言する必要があります
<uses-feature>
。例えば、<uses-feature android:name="android.hardware.screen.portrait"/>
. これは純粋に Google Play (およびそれをサポートするその他のサービス) によって提供されるフィルタリング動作であり、プラットフォーム自体は、デバイスが特定の向きのみをサポートする場合にアプリをインストールできるかどうかを制御しません。
これは、開発者の Web サイト自体で提供されている仕様です。したがって、縦向きでのみ実行するようにアプリを制限する場合は、マニフェストでタグの直前に次のタグを使用することもお勧めしますactivity
。
<uses-feature android:name="android.hardware.screen.portrait"/>
これをマニフェストに追加できます。
android:screenOrientation="portrait"
制限したいアクティビティごとに。「風景」にも対応。
特定の例では、@Stuart が提供するマニフェスト エントリが最適なオプションです。
ただし、一般的には、アクティビティごとにコードを繰り返さないようにするために、Android を拡張しActivity
、必要な初期化を .xml で実行する独自のクラスを定義しますonCreate()
。次に、Android が提供するアクティビティを直接ではなく、各アクティビティで拡張を拡張します。
これをマニフェストに追加します。
<activity android:screenOrientation="portrait"></activity>