一、屏幕方向的基本概念
在 Android 中,屏幕方向主要有两种:
竖屏(Portrait):适用于大多数手机应用,默认状态。
横屏(Landscape):适用于观看视频、游戏等需要更多水平空间的应用。
在开发过程中,有时我们可能需要根据不同的场景切换这两种模式。例如,在观看视频时,一般会将屏幕切换为横屏,而在阅读文章时则会保持竖屏。
二、主动切换屏幕方向的实现
在 Android 中,可以通过设置 Activity 的属性来实现屏幕方向的切换。我们主要使用
setRequestedOrientation(int requestedOrientation)
方法。
1. 代码示例
下面是一个简单的 Activity 示例,通过按钮点击来实现横竖屏的切换。
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;public class MainActivity extends AppCompatActivity {private boolean isLandscape = false; // Flag to check current orientation@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button switchButton = findViewById(R.id.switch_button);switchButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (isLandscape) {setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);} else {setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);}isLandscape = !isLandscape; // Toggle the flag}});}
}
2. 布局文件
对应的 activity_main.xml 布局文件如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="android:layout_width="match_parent"android:layout_height="match_parent"><Buttonandroid:id="@+id/switch_button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="切换屏幕方向"android:layout_centerInParent="true"/>
</RelativeLayout>