Вопрос по android, clickable, android-widget – Отключить все взаимодействия с сенсорным экраном во время анимации

12

Я хочу отключить все взаимодействия с сенсорным экраном во время отображения анимации. Я не хочу использоватьsetClickable() Метод на кнопках в начале или в конце анимации, потому что есть большое количество кнопок. Какие-либо предложения?

Ваш Ответ

4   ответа
6

onTouchEvent и всегдаreturn true; чтобы указать, что вы обрабатываете сенсорные события.

Вы можете найти документацию для этой функциитам.

Edit Вот один из способов, которым вы можете отключить касание по всему экрану, вместо того, чтобы обрабатывать каждое представление по одному ... Сначала измените свой текущий макет следующим образом:

<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>

А затем определите свой пользовательский вид примерно так:

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;
    }
}

Затем в упражнении вы можете отключить

(TouchBlackHoleView) black_hole = findViewById(R.id.black_hole);
black_hole.disable_touch(true);

И включите его обратно с

black_hole.disable_touch(false);
View view = findViewById(R.id.whole_view); view.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub return true; } });   я написал это в начале своей анимации, но это не сработало, пожалуйста, скажите мне, где я не прав gursahib.singh.sahni
здесь whole_view - идентификатор моего основного макета. gursahib.singh.sahni
Что это за вид и что вы пытаетесь отключить? Это кнопка? ScrollView? ...?
Какой макет у вас есть? Может быть, вы могли бы использовать FrameLayout и наложить на него View, где вы могли бы включить / отключить касание ... позвольте мне написать псевдокод в ответе ...
У меня есть кнопки на всем моем макете. я хочу отключить их gursahib.singh.sahni
0

таким образом. Я решил опубликовать свой ответ, потому что мне потребовалось около 30 минут, чтобы понять, почему я получил ошибку.

XML

<...your path to this view and in the end --> .TouchBlackHoleView
    android:id="@+id/blackHole"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

Учебный класс

открытый класс TouchBlackHoleView расширяет представление {     приватный логический touchDisable = false;

public TouchBlackHoleView(Context context) {
    super(context);
}

public TouchBlackHoleView(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public TouchBlackHoleView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    return touchDisable;
}

public void disableTouch(boolean value){
    touchDisable = value;
}
}

С помощью

blackHole = (TouchBlackHoleView) findViewById(R.id.blackHole);
blackHole.disableTouch(true);

наслаждаться

0

Простой способ реализовать это - добавить поверх него прозрачный макет (добавить его в размер и ширину родительской заливки xml).

В начале анимации:transaparentlayout.setClickable(true);

В конце анимации:transaparentlayout.setClickable(false);

1

for (int i = 1; i < layout.getChildCount(); i++) { TableRow row = (TableRow) layout.getChildAt(i); row.setClickable(false);

selected all the rows of the table layout which had all the views and disabled them

Похожие вопросы