View.layout(l,t,r,b)后Android不重绘

时间:2011-12-14 21:44:21

标签: android animation view

我试图使用ImageButton.layout(l,t,r,b)在我的布局上的特定点放置几个图像。排列后,我想在每个ImageButton上执行动画。问题是,动画在ImageButtons的位置在屏幕上发生变化之前就开始了,导致动画看起来不对。

我该如何解决这个问题?这是一些代码...

private void arrangeButtons() 
{
  int temp = 0;
  for(ImageButton imageButtonButton :imageButtonList) {
    imageButtonButton.setCurrentPositionIndex(temp);
    int l = PositionsLeft[temp];
    int t = PositionsTop[temp];
    int r = PositionsRight[temp];
    int b = positionsBottom[temp];
    currentButton.layout(l,t,r,b);
    temp++;
  }
  ViewGroup vg = (ViewGroup)findViewById(R.id.imageListFrame);
  vg.invalidate();
  vg.refreshDrawableState();
}
public static void rotateButtons() {
  for(ImageButton imageButton : imageButtonList) {
    RotateAnimation rotation = new RotateAnimation(0, 45, 25, 25);
    imageButton.setAnimation(rotation);
    imageButton.startAnimation(rotations);
  }
}
public void onCreate(Bundle savedInstanceState) {
  setContentView(R.layout.main);
  arrangeButtons();
  rotateButtons();
}

有什么想法?谢谢!

1 个答案:

答案 0 :(得分:3)

尝试requestLayout()之后调用currentButton.layout(l,t,r,b);或更好,然后使用setLayoutParams更改屏幕上视图的位置。