📜  如何在 Android 中聆听方向变化?

📅  最后修改于: 2022-05-13 01:54:37.062000             🧑  作者: Mango

如何在 Android 中聆听方向变化?

在 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 消息。