2015-08-30 3 views
1

Я использую пользовательские анимации на ACTION_DOWN исобытиях моей кнопки. Однако, прямо сейчас, я вручную настройки OnTouchListener каждого Button вручную с помощью следующего кода:Настройка такой же анимации для многих кнопок

myButton.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View yourButton, MotionEvent theMotion) { 
      Animation animation; 
      switch (theMotion.getAction()) { 
       case MotionEvent.ACTION_DOWN: 
        animation = AnimationUtils.loadAnimation(NickNameScreenActivity.this, R.anim.button_down); 
        myButton.startAnimation(animation); 
        break; 
       case MotionEvent.ACTION_UP: 
        animation = AnimationUtils.loadAnimation(NickNameScreenActivity.this, R.anim.button_up); 
        myButton.startAnimation(animation); 
        break; 
      } 
      return false; 
     } 
    }); 

Это громоздко, как я должен повторить это для всех кнопок.

Есть ли способ установить его автоматически для всех кнопок или аккуратный XML-способ сделать это?

+1

Как насчет реорганизации анонимного класса во внутренний класс, расширяющий класс 'View.OnTouchListener' и использующий его для всех кнопок? – ProtossShuttle

+0

Спасибо, это хорошая идея. Кажется, я не могу избежать создания переменной для каждой кнопки в этом случае. –

+1

Тогда как насчет написания пользовательского представления, расширяющего 'Button' и использующего его в xml? Возможно, вы можете заменить 'NickNameScreenActivity.this'' getContext() '. – ProtossShuttle

ответ

1

Вы можете написать собственный заказ, расширяющий Button и использовать его в xml. Возможно, вы можете заменить NickNameScreenActivity.this на getContext().

Смежные вопросы