Android studio - 使用插值器为 ImageView 创建 transition/animation

Android studio - creating transition/animation for an ImageView using Interpolator(s)

我想知道是否有人可以帮助我编写代码。下面是代码 网上找的,稍作调整。因此,为按钮设置一个 onClickListener 方法,该方法包括两个方法,在按下按钮时使用。所以代码有效,但不是我想象的那样。当按钮被按下时,它消失并从左侧流入屏幕,它是 AccelerateInterpolator。 我希望它做的以及我应用程序中的其他按钮就是这样。当按下按钮时,它会从它的当前位置(比方说屏幕中心)流出屏幕,然后回到它的位置位置

我不知道如何正确设置参数或更改方法。 感谢帮助

button1.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {


            findViewById(R.id.button1);

            TranslateAnimation translation;
            translation = new TranslateAnimation(getDisplayHeight(), 0f, 0f, 0f);
            translation.setStartOffset(500);
            translation.setDuration(2000);
            translation.setFillAfter(true);
            translation.setInterpolator(new AccelerateInterpolator());
            findViewById(R.id.button1).startAnimation(translation);

            button2.setVisibility(View.VISIBLE);


        }

        private int getDisplayHeight() {
            DisplayMetrics metrics = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(metrics);
            return metrics.widthPixels;
        }

    });

第一,你没有正确使用翻译动画。

TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)

因此,从当前位置移动到新位置将是:

TranslateAnimation(0, 'change in X value you want', 0, 'change in Y value you want')

第 2 要使其恢复,您可以将重复计数设置为 1 并将模式设置为反转,(另一种方法是创建另一个 translationAnimation 并将两者组合成一个集合,我发现下面更容易) :

transTo.setRepeatCount(1);
transTo.setRepeatMode(Animation.REVERSE);

第三,也许你已经知道了,但这是一个视图动画,所以按钮只是在视觉上改变它被绘制的位置,而不是它可以被点击的位置。如果这对您的目的没问题,那么继续查看动画。要移动可点击区域,我建议使用 属性 动画。我在这里写了一篇关于他们的博客 HERE and also about view animation HERE