将Android TranslateAnimation移动到特定像素位置

3

我想做的是将多个视图动画到指定的像素位置。我使用TranslateAnimation来实现这一点。我想从显示器的左上角开始动画,即x:0和y:0,直到一个可变位置。

        private void drawGameField() {

            TextView [] tvs = new TextView[10];

            for(int i = 0; i < tvs.length; i++) {

                tvs[i] = new TextView(this);
                tvs[i].setX(i * 50);
                tvs[i].setY(i * 50);
                tvs[i].setText(i + "");

                gamelayout.addView(tvs[i]); // relativelayout that is created in the onCreate method
                animateObject(1000, tvs[i], 0, (int) tvs[i].getX(), 0, (int) tvs[i].getY());                
            }
        }

        private void animateObject(int time, TextView tv, int fromDeltaX, int toDeltaX, int fromDeltaY, int toDeltaY) {

            Log.i("Animation", "Animating to: x: " + toDeltaX + ", y: " + toDeltaY);
            TranslateAnimation t = new TranslateAnimation(fromDeltaX, toDeltaX, 
                                                            fromDeltaY, toDeltaY);

            t.setDuration(time);
            tv.startAnimation(t);   
        }

我的问题是,动画并没有按照我的预期执行(动画所涉及的像素与我的输入不匹配),为什么?我做错了什么?

正如您在animateObject方法中所看到的那样,我的Logcat输出完全正确,像素与我的要求相匹配。

LogCat输出如下:

Animation  Animating to: x: 0, y: 0 
Animation  Animating to: x: 50, y: 50 
Animation  Animating to: x: 100, y: 100 
Animation  Animating to: x: 150, y: 150 
Animation  Animating to: x: 200, y: 200 ...
1个回答

0
我通过使用 ViewPropertyAnimator 解决了这个问题。 translationX(...) 和 translationY(...) 方法完全满足我的需求。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接