0

我想在不更改当前活动方向的情况下在设备的方向更改上创建一个新活动。有没有办法做到这一点?

附加信息:

我的全部应用程序默认方向是 Portrate。当设备处于横向时,我必须打开第二个活动。但是第一个活动应该在 Portrate 中。

4

5 回答 5

2

您可以android:screenOrienttation="Landscape/Portrate"在您AndroidMenifest.xml的特定活动中使用。因此,其余活动将保留在默认视图中,并且当您提及时,该活动将强制显示在特定视图中。

希望这对您有所帮助。

于 2012-09-02T07:30:55.050 回答
2

你当然可以。您只需在清单中声明您的第一个活动将处理方向更改。然后添加一个 onConfigurationChanged 函数来启动您的第二个活动。

于 2012-09-02T07:33:50.053 回答
1

写在Menifest

第一个活动

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

第二个活动

   <activity  android:name="secondActivity" android:screenOrientation="landscape"></activity>
于 2012-09-02T07:54:06.737 回答
1

您还可以以编程方式检测您的活动的当前方向,并在您的设备处于横向模式时运行您的第二个活动的意图。这是完成它的代码:

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 回答
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 回答