我想在用户单击时反转 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/