2
ImageButton.layout (l, t, r, b)을 사용하여 레이아웃의 특정 지점에 여러 이미지를 배치하려고합니다. 배열이 끝나면 각 ImageButton에서 애니메이션을 실행하고 싶습니다. 문제는 애니메이션이 화면에 표시되기 전에 애니메이션이 시작되어 애니메이션이 잘못 보입니다.View.layout (l, t, r, b) 이후 Android가 다시 그려지지 않음
어떻게 해결할 수 있습니까? 여기에 약간의 코드가 있습니다 ...
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();
}
어떤 생각이 들었습니까? 감사!
도움 주셔서 감사합니다. 지금은 setLayoutParams를 사용하고 있지만 문제의 근원을 발견했습니다. 지금 애니메이션을 제거하고 setLayoutParams를 사용하더라도 topMargin rightMargin 등은 모두 onCreate가 완료 될 때까지 (0,0,0,42)로 재설정됩니다. 왜 이런 일이 일어날까요?! 어떤 도움을 크게 롤 감사, 나는 꽤 난처한 ... – italianmike
아마 당신은 XML에서 여백을 설정입니까? super.onCreate()에 대한 호출은 어디에 있습니까? – asenovm
내가 게시 한 코드는 [슈퍼 콜을 가지고 있습니다.] 삶었습니다. xml이 위치를 덮어 쓸 수 있다고 생각하여 LinearLayout을 확장하고 onFinishInflate를 오버라이드하고 arrangeButtons를 호출하여 동일한 문제가 발생했습니다. 나는 하하를 발견했다. – italianmike