我有一个动画在屏幕上滑动,而动画正在播放我希望它在点击时消失!
我曾尝试使用OnClickListener()和OnClickMethods,两者都只在动画播放完毕后才有效!
TranslateAnimation animation = new TranslateAnimation(answer, answer, 0, height * -1); // xfrom , xto, y from,y to
animation.setDuration(5000);
Floater0.startAnimation(animation);
animation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
if (AdPlayer0.isPlaying()) {
answer = rn.nextInt(width) + 1; //useless
TranslateAnimation animation0 = new TranslateAnimation(answer, answer, 0, height * -1); // xfrom , xto, y from,y to
animation0.setDuration(5000);
animation0.setFillEnabled(true);
Floater1.startAnimation(animation0);
Floater1.setVisibility(View.VISIBLE);
Floater0.startAnimation(animation);
}
}
});
我正在阅读答案here,并提到了一些有趣的内容:
动画不会影响屏幕上视图的“物理”位置。如果您希望它实际移动,那么您需要调整视图的属性。
我现在测试了上面的引用,它似乎是真的!我还研究了在动画结束后如何调整视图的位置属性,但是我想在动画结束之前更改它的位置(在播放时)!
有关解决方案的任何建议吗?理想情况下,我想在播放动画时更改视图的物理位置!
答案 0 :(得分:1)
TranslationAnimation仅移动屏幕上的像素,因此OnClickListener不会使用它进行动画处理。请改用ViewPropertyAnimator并设置OnClickListener然后它应该可以工作。
代码看起来像这样:
Floater1.animate().setDuration(5000).translationX(answer).translationY(height * -1);
查看docs中的所有可用方法。
编辑/更新:
.translationX(float toX)
表示 - >在x轴上将视图设置为此点。
动画始终从视图的当前位置开始,因此您不需要fromX。您还可以使用其他方法:
.translationXBy(float byX)
.translationYBy(float byY)
通过这些,您可以将视图 BY 转换为浮动值,而不是 TO 转换为屏幕上的某个点。