动画时禁用所有触摸屏交互

gur*_*hni 13 android android-widget clickable

我希望在显示动画时禁用所有触摸屏交互.我不希望setClickable()在动画的开头或结尾处的按钮上使用该方法,因为有大量按钮.有什么建议?

Mat*_*ieu 6

在您的"活动"中,您可以覆盖onTouchEvent并始终return true;指示您正在处理触摸事件.

您可以在那里找到该功能的文档.

编辑这是一种可以在整个屏幕上禁用触摸而不是逐个处理每个视图的方法...首先更改当前的布局,如下所示:

<FrameLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

    < .... put your current layout here ... />

    <TouchBlackHoleView
        android:id="@+id/black_hole"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)

然后使用以下内容定义自定义视图:

public class TouchBlackHoleView extends View {
    private boolean touch_disabled=true;
    @Override
    public boolean onTouchEvent(MotionEvent e) {
        return touch_disabled;
    }
    public disable_touch(boolean b) {
        touch_disabled=b;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,在活动中,您可以禁用触摸

(TouchBlackHoleView) black_hole = findViewById(R.id.black_hole);
black_hole.disable_touch(true);
Run Code Online (Sandbox Code Playgroud)

然后启用它

black_hole.disable_touch(false);
Run Code Online (Sandbox Code Playgroud)