Проблемы с OnClickListener после перемещения ImageButton после TranslateAnimation
Что я должен сделать, чтобы переместить imageButton на новое место и сохранить событие OnClick?
У меня есть два вопроса по этому вопросу:
- Если я использую fillAfter(true), онклик не будет перенесен на новое место.
- Если использовать setAnimationListener(onAnimationEnd) и вызвать layout() для перемещения ImageButton на новое место, ImageButton вернется на новое начальное место, почему?
коды здесь:
tsla = new TranslateAnimation(0.0f,(float) (imgWidth * 0.45)-wh/2,0.0f,(float) (imgHeight * 0.566666667)-wh/2);
tsla.setDuration(sleepX);
tsla.setAnimationListener(new AnimationListener(){
public void onAnimationStart(Animation arg0) {
}
public void onAnimationEnd(Animation arg0) {
imgBtnChengdu.layout(
(int) (imgWidth * 0.45),
(int) (imgHeight * 0.566666667),
(int) (imgWidth - wh - imgWidth * 0.45),
(int) (imgHeight - wh - imgHeight * 0.566666667)
);
}
public void onAnimationRepeat(Animation arg0) {
}
});
imgBtnChengdu.setAnimation(tsla);
1 ответ
Решение
Проблема в том, что Android будет только анимировать изображение кнопки на новом месте.
Это означает, что область onClick остается на старом месте. Вам также нужно изменить положение кнопки в конце анимации, чтобы переместить всю кнопку на новое место, а не только ее вид.