我想在用户单击时反转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,您需要向左移动。

10-06 05:13
查看更多