You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android开发:如何检测ImageView的旋转角度(每次点击转30度)

问题描述

我实现了点击按钮让ImageView每次旋转30度的功能,想要检测该ImageView是否旋转至30度、60度的状态。以下是我尝试的代码:

float rotation = image_circle.getRotation();
if (rotation == 31) {
    image_circle.setVisibility(View.INVISIBLE);
}

附带旋转按钮图标、代码截图。

解决方案

直接用==判断浮点数容易因为精度问题出现判断失效的情况,同时你代码里判断的是31度,和需求的30、60度不符,这里给两种可靠的解决方式:

方式1:通过记录旋转次数判断(推荐)

每次点击旋转按钮时,维护一个计数器来记录旋转次数,这样能完全避免浮点数精度问题:

// 全局或成员变量定义计数器
int rotateTimes = 0;

// 按钮点击事件里的代码
rotateTimes++;
image_circle.setRotation(rotateTimes * 30f);
// 判断是否旋转到30度(1次)或60度(2次)
if (rotateTimes == 1 || rotateTimes == 2) {
    image_circle.setVisibility(View.INVISIBLE);
}

方式2:处理浮点数精度误差

如果必须依赖getRotation()的返回值,不要直接用相等判断,而是判断值是否在目标角度的误差范围内:

float rotation = image_circle.getRotation();
// 设置±0.5的误差范围,避免浮点数精度问题
if (Math.abs(rotation - 30f) < 0.5f || Math.abs(rotation - 60f) < 0.5f) {
    image_circle.setVisibility(View.INVISIBLE);
}

内容的提问来源于stack exchange,提问作者Maze Noone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 22:07:17