Я создал собственное представление, которое использует фиктивную TranslateAnimation для настройки некоторых свойств макета.Я использую Интерполятор для вычисления высоты и применяю его к представлению внутри метода applyTransformation () TranslateAnimation.
Это работает очень хорошо, если я запускаю анимацию из своей Деятельности.*
Когда я пытаюсь сделать то же самое, используя сенсорное событие, ничего не происходит.
@Override
// This method is touch handler of the View itself
public boolean onTouch(View v, MotionEvent event) {
Log.i("test", "onTouch()");
this.expand(); // onTouch is part of the view itself and calls expand() directly
return true;
}
Мой метод расширения выглядит следующим образом:
public void expand() {
Log.i("test", "Expand!");
TranslateAnimation anim = new TranslateAnimation(0, 0, 0, 0) {
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
Log.i("test", "applyTransformation()");
super.applyTransformation(interpolatedTime, t);
// do something
}
};
anim.setDuration(500);
anim.setInterpolator(new AccelerateDecelerateInterpolator());
this.someInternalView.startAnimation(anim);
}
После создания моей активности Logcatпоказывает "onCreate ()" Внутри моего события касания Logcat показывает "onTouch ()" Внутри метода expand () Logcat показывает "Развернуть!"- либо вызывается из действия, либо из события.
Внутри метода applyTransformation () Logcat показывает «applyTransformation ()» - НО!только если метод expand () вызывается из onCreate ().Любая попытка запустить анимацию с события не удалась.
Это выглядит как проблема с многопоточностью.Может ли это быть?Есть ли что-то, что я пропускаю?Насколько я вижу из других постов, запуск анимации с событий должен работать без проблем ...
Заранее спасибо!