Android 开发 - 获取当前设备屏幕的旋转角度

获取当前设备屏幕的旋转角度

1、基本介绍
java 复制代码
@Surface.Rotation
public int getRotation() {
    synchronized (mLock) {
        updateDisplayInfoLocked();
        return getLocalRotation();
    }
}
  • 返回一个 int 常量
返回值 常量 说明
0 Surface.ROTATION_0 未旋转 0°,竖屏,顶部朝上
1 Surface.ROTATION_90 顺时针旋转 90°,左横屏,顶部朝左
2 Surface.ROTATION_180 旋转 180°,倒置,顶部朝下
3 Surface.ROTATION_270 顺时针旋转 270°,右横屏,顶部朝右
  • 注:这里的顺时针是相对于设备的自然方向而言的,而不是相对于你(用户)的视觉方向
2、演示
xml 复制代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/root"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#F5F5F5"
    android:gravity="center"
    android:orientation="vertical">

    <TextView
        android:id="@+id/tv_info"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:lineSpacingExtra="12dp"
        android:textSize="24sp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="32dp"
        android:text="\n点击屏幕刷新"
        android:textColor="#999"
        android:textSize="14sp" />
</LinearLayout>
java 复制代码
public class RotationTestActivity extends AppCompatActivity {

    private TextView tvInfo;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_rotation_test);
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.root), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });

        tvInfo = findViewById(R.id.tv_info);
        findViewById(R.id.root).setOnClickListener(v -> showRotation());

        showRotation();
    }

    private void showRotation() {
        int rotation = getWindowManager().getDefaultDisplay().getRotation();

        String[] map = {
                "0 → 竖屏(顶部朝上)",
                "1 → 左横屏(顶部朝左)",
                "2 → 倒置(顶部朝下)",
                "3 → 右横屏(顶部朝右)"
        };

        tvInfo.setText("getRotation() = " + rotation + "\n" + map[rotation]);
    }
}
相关推荐
wangchunyu1145 小时前
JAVA CompletableFuture异步编程实战
java·开发语言·python
paopaokaka_luck6 小时前
流浪动物救助与收养系统(DeepSeek AI对话、 ECharts多维分析、救助流程衔接、领养与回访衔接、 捐赠确认与公示、志愿者协作)
java·前端·javascript·人工智能·mysql·echarts·推荐算法
Thomas.Sir6 小时前
第9课:SpringBoot4.x Web开发基础:WebMvc自动配置、静态资源、请求参数接收
java·spring boot
程序 代码狂人6 小时前
切片表与分区表的区别(数据开发面试版)
java·大数据·开发语言·数据仓库·算法
警醒与鞭策7 小时前
Codex桌面版与Claude桌面版使用设置
android·unity·ai·性能优化
2501_944521597 小时前
Deepmerge 跨端三方库仓颉适配全流程
java·python·eclipse·github
南归北隐8 小时前
Spring AI Alibaba Graph框架实现MCP数据库查询实战
java·后端·spring ai·mcp·spring ai mcp
古法老登瞎折腾8 小时前
大数据智能运维实战(九):让 AI 查日志——找到异常,也保留上下文
java·大数据·运维·人工智能·spring ai·mcp
ai大模型-探索者9 小时前
Function Call与MCP(区别、联系与实战)
java·服务器·网络
略略略咯咯9 小时前
啊啊啊啊啊
java·服务器·数据库