我想在不改变当前活动方向的情况下,在设备的方向更改上创建新活动。有没有办法做到这一点?
其他信息:
我的应用程序默认方向是Portrate。当设备处于横向时,我必须打开第二个活动。但第一项活动应该是Portrate
答案 0 :(得分:2)
您可以在android:screenOrienttation="Landscape/Portrate"
中使用AndroidMenifest.xml
作为特定活动。因此剩下的活动将保留在默认视图中,当您进行维护时,修正活动将强制显示在特定视图中。< / p>
希望这对你有所帮助。
答案 1 :(得分:2)
当然可以。您只需在清单中声明您的第一个活动将处理方向更改。然后添加一个启动第二个活动的onConfigurationChanged函数。
答案 2 :(得分:1)
写在清单
第一个活动的
<activity android:name="firstActivity" android:screenOrientation="portrait"></activity>
第二个活动
<activity android:name="secondActivity" android:screenOrientation="landscape"></activity>
答案 3 :(得分: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);
}
答案 4 :(得分: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);
}
}