java - 如何通过位操作反转 View 的可见性

标签 java android bit-manipulation

我想在用户单击时反转 SurfaceView 上 View 的可见性。单击可使 View 在屏幕上可见。下一次单击将使其不可见,依此类推。
我已经尝试过 view.setVisibility(Integer.reverse()) 和 view.setVisibility(View.GONE ^ view.getVisibility()) ,但它们都不起作用。后者甚至无法编译。

最佳答案

View 的可见性不是二元的,因为不只有两种状态。 View 可以处于三种状态:VISIBLE、INVISIBLE 或 GONE。您想在哪两个之间切换?

通常,您可以使用以下内容设置 View 的可见性:

view.setVisibility(View.GONE);

这实际上相当于:

view.setVisibility(8);

因为这三个值都是 View 类中的公共(public)静态整数。他们是:

public static final int VISIBLE = 0x00000000;
public static final int INVISIBLE = 0x00000004;
public static final int GONE = 0x00000008;

它们都是 2 的幂,所以在二进制中它们的值是:

VISIBLE =   ...0000;
INVISIBLE = ...0100;
GONE =      ...1000;

所以 Integer.reverse() 并不是你真正想要的。 VISIBLE 始终为 0,要从 INVISIBLE 变为 GONE,您需要向左移动。

关于java - 如何通过位操作反转 View 的可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49345480/

相关文章:

java - 性能问题 onDraw 耗时太长

android - 构造函数 TimePickerDialog 未定义

Android PagerTabStrip 文本消失

arduino - 加速度计代码中的位移操作

java - Java EWS API 的问题

java - 在 IDEA Scratch 文件中导入快捷方式

algorithm - 从 ulong 中删除位的快速方法

c - 从 C 中的字节数组中提取 14 位值

java - 如何使用索引调试每个循环?

java - java中如何让两架飞机同步降落在两条不同的跑道上?