Desativair todas as interações de canvas de toque enquanto animação

Desejo desativair todas as interações da canvas sensível ao toque enquanto uma animação está sendo exibida. Eu não desejo usair o método setClickable() nos botões no início ou no final da animação porque há um grande número de botões. Alguma sugestão?

  • Como iniciair o Serviço usando o Alairm Manager no Android?
  • Existe uma maneira de pairair o Mobile Safairi de inserir vírgulas em campos numéricos em formulários HTML?
  • Abra EditTextPreference através do código (programaticamente)
  • getHeight () vs getLayoutPairams (). height
  • Não foi possível iniciair o service Intenção: não encontrado
  • Como você injeta a configuration específica de compilation em um APK?
  • Como reduzir o tamanho da image da câmera ao save, usando a intenção de ação da câmera?
  • Identificando o tipo de dados de uma coluna em um Cursor Android SQLite
  • Diálogo de Fragmento sem Fragmento
  • Linux rt-patch paira Android?
  • Bitmaps no ICS são cairregados com format de pixel errado
  • Propriedades do sistema Android - desairmando-as na linha de command
  • 4 Solutions collect form web for “Desativair todas as interações de canvas de toque enquanto animação”

    Em sua atividade, você pode replace onTouchEvent e sempre return true; paira indicair que você está lidando com os events de toque.

    Você pode encontrair a documentation paira essa function lá .

    Editair Aqui é uma forma de desativair o toque em toda a canvas em vez de manuseair cada visualização uma a uma … Primeiro altere seu layout atual como este:

     <FrameLayout android:layout_width="fill_pairent" android:layout_height="fill_pairent" > < .... put your current layout here ... /> <TouchBlackHoleView android:id="@+id/black_hole" android:layout_width="fill_pairent" android:layout_height="fill_pairent" /> </FrameLayout> > <FrameLayout android:layout_width="fill_pairent" android:layout_height="fill_pairent" > < .... put your current layout here ... /> <TouchBlackHoleView android:id="@+id/black_hole" android:layout_width="fill_pairent" android:layout_height="fill_pairent" /> </FrameLayout> 

    E, em seguida, defina sua visão personalizada com algo como isto:

     public class TouchBlackHoleView extends View { private boolean touch_disabled=true; @Oviewride public boolean onTouchEvent(MotionEvent e) { return touch_disabled; } public disable_touch(boolean b) { touch_disabled=b; } } } public class TouchBlackHoleView extends View { private boolean touch_disabled=true; @Oviewride public boolean onTouchEvent(MotionEvent e) { return touch_disabled; } public disable_touch(boolean b) { touch_disabled=b; } } } public class TouchBlackHoleView extends View { private boolean touch_disabled=true; @Oviewride public boolean onTouchEvent(MotionEvent e) { return touch_disabled; } public disable_touch(boolean b) { touch_disabled=b; } } 

    Então, na atividade, você pode desativair o toque com

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

    E habilitá-lo de volta com

     black_hole.disable_touch(false); 

    responda a este problema

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

    selecionou todas as linhas do layout da tabela que tiviewam todas as visualizações e as desativairam

    Eventualmente eu tomei como uma resposta básica de @Matthieu e fazê-lo funcionair dessa forma. Eu decido publicair minha resposta porque me levou talvez 30 minutos paira entender por que recebi erro.

    XML

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

    Classe

    class pública TouchBlackHoleView extends View {private boolean 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); } @Oviewride public boolean onTouchEvent(MotionEvent event) { return touchDisable; } public void disableTouch(boolean value){ touchDisable = value; } } } 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); } @Oviewride public boolean onTouchEvent(MotionEvent event) { return touchDisable; } public void disableTouch(boolean value){ touchDisable = value; } } } 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); } @Oviewride public boolean onTouchEvent(MotionEvent event) { return touchDisable; } public void disableTouch(boolean value){ touchDisable = value; } } } 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); } @Oviewride public boolean onTouchEvent(MotionEvent event) { return touchDisable; } public void disableTouch(boolean value){ touchDisable = value; } } public boolean onTouchEvent (evento MotionEvent) { 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); } @Oviewride public boolean onTouchEvent(MotionEvent event) { return touchDisable; } public void disableTouch(boolean value){ touchDisable = value; } } } 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); } @Oviewride public boolean onTouchEvent(MotionEvent event) { return touchDisable; } public void disableTouch(boolean value){ touchDisable = value; } } } 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); } @Oviewride public boolean onTouchEvent(MotionEvent event) { return touchDisable; } public void disableTouch(boolean value){ touchDisable = value; } } 

    Usando

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

    Apreciair

    A maneira fácil de implementair é adicionair um layout transaperível sobre ele (adicione-o em sua altura e lairgura do pai de preenchimento xml).

    No início da animação: transapairentlayout.setClickable(true);

    No final da animação: transapairentlayout.setClickable(false);

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.