android - 如何检测Android中布局的方向变化?

我刚刚实现了一个方向更改功能 - 例如当布局从纵向变为横向(反之亦然)时。如何检测方向更改事件何时完成。

OrientationEventListener 不起作用。如何获取有关布局方向更改事件的通知?

最佳答案

使用 Activity 的 onConfigurationChanged 方法。 见以下代码:

@Override
public void onConfigurationChanged(@NotNull 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();
    }
}

您还必须在 list 文件中编辑适当的 元素以包含 android:configChanges 请看下面的代码:

<activity android:name=".MyActivity"
          android:configChanges="orientation|keyboardHidden"
          android:label="@string/app_name">

注意:在 Android 3.2(API 级别 13)或更高版本中,当设备在纵向和横向之间切换时,“屏幕尺寸”也会发生变化。因此,如果您希望在针对 API 级别 13 或更高级别进行开发时防止由于方向更改而导致运行时重新启动,您必须为 API 级别 13 或更高级别声明 android:configChanges="orientation|screenSize"。 p>

希望这会对你有所帮助... :)

https://stackoverflow.com/questions/5726657/

相关文章:

android - 如何检查 Activity 是在前台还是在可见背景中?

android - 带有阴影的自定义 ImageView

android - 带有完成操作按钮的多行 EditText

android - 如何调试签署发布的apk?

android - 获取 backstack 中的最新 fragment

android - SearchView 的 OnCloseListener 不起作用

android - 如何将值从一个 Activity 传递到上一个 Activity

android - 无法修改 ListView 中的 ArrayAdapter : Unsuppor

android - 清算 Intent

android - ViewPager.setOffscreenPageLimit(0) 无法按预期