2015-10-30 2 views
0

У меня есть следующий код в моем OnCreate метод:Animate View/Rect on creation?

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

Вы должны дать этому попытку:

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); 
+0

Спасибо, но, к сожалению, это не кажется, что сделать что-нибудь. – cyden

+0

Что делать, если вы добавили '.start()' после 'setStartDelay (...)'? Вы видите только белый экран или же голубые плитки? –

+0

Еще только голубые плитки и без анимации. – cyden