Animate View / Rect创建?

时间:2015-10-30 11:12:47

标签: android android-animation

我的onCreate方法中有以下代码:

layout.getViewTreeObserver().addOnGlobalLayoutListener(
            new ViewTreeObserver.OnGlobalLayoutListener() {
                @Override
                public void onGlobalLayout() {
                    Paint p = new Paint();
                    field = new Token[FIELDSIZE][FIELDSIZE];
                    for (int i =0; i < FIELDSIZE ; i++) {
                        for (int j = 0; j < FIELDSIZE; j++) {
                            Token tmp = new Token(j, i, p, false, PlayActivity.this);
                            field[j][i] = tmp;
                            layout.addView(tmp);
                        }
                    }

我创造了这个:

enter image description here

但它只是在那里活动出现了。 我怎么能为它制作动画?就像一个接一个地消失/飞入或者什么?

提前致谢

1 个答案:

答案 0 :(得分:1)

你应该尝试一下:

layout.getViewTreeObserver().addOnGlobalLayoutListener(
            new ViewTreeObserver.OnGlobalLayoutListener() {
                @Override
                public void onGlobalLayout() {
                    Paint p = new Paint();
                    field = new Token[FIELDSIZE][FIELDSIZE];
                    for (int i =0; i < FIELDSIZE ; i++) {
                        for (int j = 0; j < FIELDSIZE; j++) {
                            Token tmp = new Token(j, i, p, false, PlayActivity.this);
                            field[j][i] = tmp;
                            // Make it invisible in the beginning
                            tmp.setAlpha(0);
                            layout.addView(tmp);
                            tmp.animate()
                                .alpha(1.0)
                                .setDuration(600)
                                .setStartDelay(100 + i * FIELDSIZE * 10 + j * 10);
                        }
                    }

您可以使用这些值,直到它们对您有益。你也可以尝试setScaleX和setScaleY,如:

tmp.setScaleX(0);
tmp.setScaleY(0);

然后再说:

tmp.animate()
   .scaleX(1.0)
   .scaleY(1.0)
   .setDuration(600)
   .setStartDelay(100 + i * FIELDSIZE * 10 + j * 10);