我该如何与动画互动?

时间:2016-06-07 15:44:52

标签: java android android-animation

我有一个动画在屏幕上滑动,而动画正在播放我希望它在点击时消失!

我曾尝试使用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,并提到了一些有趣的内容:

  

动画不会影响屏幕上视图的“物理”位置。如果您希望它实际移动,那么您需要调整视图的属性。

我现在测试了上面的引用,它似乎是真的!我还研究了在动画结束后如何调整视图的位置属性,但是我想在动画结束之前更改它的位置(在播放时)!

有关解决方案的任何建议吗?理想情况下,我想在播放动画时更改视图的物理位置!

1 个答案:

答案 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 转换为屏幕上的某个点。