現在のアクティビティの向きを変更せずに、デバイスの向きの変更で新しいアクティビティを作成したいと考えています。これを行う方法はありますか?
追加情報:
私の全アプリケーションのデフォルトの向きは Portrate です。デバイスが横向きの場合、2 番目のアクティビティを開く必要があります。ただし、最初のアクティビティは Portrate にある必要があります。
現在のアクティビティの向きを変更せずに、デバイスの向きの変更で新しいアクティビティを作成したいと考えています。これを行う方法はありますか?
追加情報:
私の全アプリケーションのデフォルトの向きは Portrate です。デバイスが横向きの場合、2 番目のアクティビティを開く必要があります。ただし、最初のアクティビティは Portrate にある必要があります。
特定のアクティビティに使用できandroid:screenOrienttation="Landscape/Portrate"
ます。AndroidMenifest.xml
そのため、残りのアクティビティはデフォルトのビューに残り、Perticure アクティビティは特定のビューに強制的に表示されます。
これがお役に立てば幸いです。
もちろんできます。マニフェストで、最初のアクティビティが向きの変更を処理することを宣言するだけです。次に、2 番目のアクティビティを開始する onConfigurationChanged 関数を追加します。
また、プログラムでアクティビティの現在の向きを検出し、デバイスがランドスケープモードのときはいつでも、2番目のアクティビティへのインテントを実行することもできます。これを実現するためのコードは次のとおりです。
WindowManager wm = getWindowManager();
Display d = wm.getDefaultDisplay();
if(d.getWidth() > d.getHeight())
{
// landscape mode
Intent i = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(i);
}
メニフェストに書く
最初のアクティビティ
<activity android:name="firstActivity" android:screenOrientation="portrait"></activity>
2 番目のアクティビティ
<activity android:name="secondActivity" android:screenOrientation="landscape"></activity>
ご協力ありがとうございます。最後に、 を使用してこれを行いましたSensorEventListener
。
OnCreate()
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
リスナー
private SensorEventListener mySensorEventListener = new SensorEventListener() {
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
public void onSensorChanged(SensorEvent event) {
// angle between the magnetic north directio
// 0=North, 90=East, 180=South, 270=West
float azimuth = event.values[1];
// compassView.updateData(azimuth);
if ((azimuth < 100 && azimuth > 60)
|| (azimuth > -100 && azimuth < -60)) {
if (EasterVal != 0) {
if (!Modules.LoanType.equalsIgnoreCase("Ballcash")) {
Intent in = new Intent(Buyeroutput.this, Esteregg.class);
startActivity(in);
EasterVal = 0;
}
}
} else {
EasterVal = 1;
}
}
};
protected void onDestroy() {
super.onDestroy();
if (sensor != null) {
sensorManager.unregisterListener(mySensorEventListener);
}
}