Android XML configChanges标记无效

时间:2018-01-22 04:10:52

标签: android xml opencv android-configchanges

android:configChanges="screenSize|orientation|keyboardHidden">

标签无效。旋转设备时,我的活动总是被破坏。我不知道为什么会这样。我已经为上面添加了所有可能的标志,它仍然没有效果。另一个相关的(?)事实:这个活动包含一个OpenCv JavaCameraView(引擎盖下的摄像头1)。

这是xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.mycompany.myname.mycamera">

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="false"
    android:theme="@style/AppTheme">

    <activity
        android:name=".activities.CaptureActivity"
        android:configChanges="screenSize|orientation|keyboardHidden">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>
</application>

为什么这个标签可能没有任何效果?

e:我应该指定:我想防止我的活动在旋转时被破坏,但我确实想知道旋转何时发生以及当前的方向是什么。

1 个答案:

答案 0 :(得分:0)

这应该有效:

android:configChanges="orientation|screenSize"

用于检测方向变化:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    // Checks the orientation of the screen
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
        Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
    }
}