如何在 Android 中聆听方向变化?
在 Android 中,应用程序可以具有类型的方向,即纵向和横向。默认情况下,每个新项目在创建时都带有纵向。但是,这可以更改为横向或半。在半屏的情况下,应用程序支持纵向和横向,具体取决于设备的站立方向。此外,可以检测方向何时从一个变为另一个。
因此,在本文中,我们将向您展示如何在 Android 中收听方向变化。 IDE 准备就绪后,请按照以下步骤操作。
分步实施
第 1 步:在 Android Studio 中创建一个新项目
要在 Android Studio 中创建新项目,请参阅如何在 Android Studio 中创建/启动新项目。我们在 Kotlin 中演示了该应用程序,因此请确保在创建新项目时选择Kotlin作为主要语言。
第 2 步:处理 AndroidManifest.xml
在activity标签中,将configChanges设置为orientation|screenSize ,实现半定向。
XML
XML
Kotlin
package org.geeksforgeeks.orientationchange
import android.content.res.Configuration
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
// Listening to the orientation config
// changes and generating Toast Messages
override fun onConfigurationChanged(newConfig: Configuration) {
super.onConfigurationChanged(newConfig)
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(baseContext, "Landscape Mode", Toast.LENGTH_SHORT).show()
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
Toast.makeText(baseContext, "Portrait Mode", Toast.LENGTH_SHORT).show()
}
}
}
// If you are developing for API level 13 (3.2) or higher,
// you should specify android:configChanges="orientation|screenSize",
// otherwise onConfigurationChanged won't be called.
// https://developer.android.com/guide/topics/resources/runtime-changes#HandlingTheChange
第 3 步:使用 activity_main.xml 文件
导航到app > res > layout > activity_main.xml并将以下代码添加到该文件。下面是activity_main.xml文件的代码。因此,不需要任何更改并且保持不变。
XML
第 4 步:使用 MainActivity.kt 文件
转到MainActivity.kt文件并参考以下代码。下面是MainActivity.kt文件的代码。代码中添加了注释以更详细地理解代码。
科特林
package org.geeksforgeeks.orientationchange
import android.content.res.Configuration
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
// Listening to the orientation config
// changes and generating Toast Messages
override fun onConfigurationChanged(newConfig: Configuration) {
super.onConfigurationChanged(newConfig)
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(baseContext, "Landscape Mode", Toast.LENGTH_SHORT).show()
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
Toast.makeText(baseContext, "Portrait Mode", Toast.LENGTH_SHORT).show()
}
}
}
// If you are developing for API level 13 (3.2) or higher,
// you should specify android:configChanges="orientation|screenSize",
// otherwise onConfigurationChanged won't be called.
// https://developer.android.com/guide/topics/resources/runtime-changes#HandlingTheChange
输出:
可以看到程序监听方向变化并生成 toast 消息。