0

現在のアクティビティの向きを変更せずに、デバイスの向きの変更で新しいアクティビティを作成したいと考えています。これを行う方法はありますか?

追加情報:

私の全アプリケーションのデフォルトの向きは Portrate です。デバイスが横向きの場合、2 番目のアクティビティを開く必要があります。ただし、最初のアクティビティは Portrate にある必要があります。

4

5 に答える 5

2

特定のアクティビティに使用できandroid:screenOrienttation="Landscape/Portrate"ます。AndroidMenifest.xmlそのため、残りのアクティビティはデフォルトのビューに残り、Perticure アクティビティは特定のビューに強制的に表示されます。

これがお役に立てば幸いです。

于 2012-09-02T07:30:55.050 に答える
2

もちろんできます。マニフェストで、最初のアクティビティが向きの変更を処理することを宣言するだけです。次に、2 番目のアクティビティを開始する onConfigurationChanged 関数を追加します。

于 2012-09-02T07:33:50.053 に答える
1

また、プログラムでアクティビティの現在の向きを検出し、デバイスがランドスケープモードのときはいつでも、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);
}
于 2012-09-02T08:01:35.463 に答える
1

メニフェストに書く

最初のアクティビティ

  <activity  android:name="firstActivity" android:screenOrientation="portrait"></activity>

2 番目のアクティビティ

   <activity  android:name="secondActivity" android:screenOrientation="landscape"></activity>
于 2012-09-02T07:54:06.737 に答える
0

ご協力ありがとうございます。最後に、 を使用してこれを行いました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);
    }
}
于 2012-09-02T14:47:16.500 に答える