【问题标题】:Android - TranslateAnimationsAndroid - 翻译动画
【发布时间】:2011-11-19 06:44:03
【问题描述】:

当我尝试在 ImageView 上应用翻译动画时,图像完全消失了。我不确定为什么会发生这种情况,因为我通过 eclipse 调试器运行了这段代码,并且 x_start 和 x_final 的值似乎是正确的。

关于为什么会发生这种情况或我如何最终让我的TranslateAnimation 工作有什么想法吗?

    chargeButton.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            int x_cord = (int) event.getRawX();
            int y_cord = (int) event.getRawY();

            switch (event.getActionMasked()){
                case MotionEvent.ACTION_DOWN:
                    break;
                case MotionEvent.ACTION_MOVE:
                    chargeButton.setLayoutParams(setPosition(x_cord, false));
                    break;
                case MotionEvent.ACTION_UP:
                    int x_start = x_cord;
                    x_cord = 0;
                    slowMove(x_start, x_cord, false);
                    chargeButton.setLayoutParams(setPosition(x_cord, false));

                    break;
                default:
                    break;
            }
            return true;
        }
    });


}

public void slowMove(int x_start, int x_final, boolean pay)
{
    Animation transAnimation = new TranslateAnimation(x_start, x_final, 0, 0);
    transAnimation.setFillAfter(true);
    transAnimation.setDuration(1000);
    if (pay)
        payButton.startAnimation(transAnimation);
    else
    {
        chargeButton.clearAnimation();
        chargeButton.startAnimation(transAnimation);
    }
}

更多背景知识,这个函数是从onTouchListenerMotionEvent.ACTION_UP 案例下调用的。

觉得我需要使用 Animation.Relative_TO_SELF 或类似的东西来定位。但是,当我只有 ImageViews 的绝对定位 时,我不确定该怎么做。

我们将不胜感激任何和所有的想法。

【问题讨论】:

  • 请提供更多代码详情。

标签: android android-layout android-emulator android-widget


【解决方案1】:

不要使用布局参数来移动视图 - 这确实不是一个好主意。我一直在走这条路,没有任何好处。

考虑扩展 View 并设置您自己的自定义视图,您可以在其中完全控制发生的事情。

【讨论】:

  • 我终于知道为什么它不起作用了,谢谢! +1