我想在用户单击时反转SurfaceView上视图的可见性。单击使视图在屏幕上可见。再次单击将使其不可见,依此类推。
我已经尝试过view.setVisibility(Integer.reverse())
和view.setVisibility(View.GONE ^ view.getVisibility())
,但是它们都不起作用。后者甚至不编译。
最佳答案
视图的可见性不是二进制的,因为不仅存在两种状态。视图可以处于三种状态:“可见”,“不可见”或“消失”。您想在哪两个之间切换?
通常,您可以通过以下方式设置视图的可见性:
view.setVisibility(View.GONE);
这实际上等效于:
view.setVisibility(8);
因为这三个值是View类中的每个公共静态整数。他们是:
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,您需要向左移动。