2011-12-14 1 views
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(); 
} 

어떤 생각이 들었습니까? 감사!

답변

3

currentButton.layout(l,t,r,b); 이상으로 전화를 걸어보십시오. setLayoutParams을 사용하면 화면에서보기 위치를 변경할 수 있습니다.

+0

도움 주셔서 감사합니다. 지금은 setLayoutParams를 사용하고 있지만 문제의 근원을 발견했습니다. 지금 애니메이션을 제거하고 setLayoutParams를 사용하더라도 topMargin rightMargin 등은 모두 onCreate가 완료 될 때까지 (0,0,0,42)로 재설정됩니다. 왜 이런 일이 일어날까요?! 어떤 도움을 크게 롤 감사, 나는 꽤 난처한 ... – italianmike

+0

아마 당신은 XML에서 여백을 설정입니까? super.onCreate()에 대한 호출은 어디에 있습니까? – asenovm

+0

내가 게시 한 코드는 [슈퍼 콜을 가지고 있습니다.] 삶었습니다. xml이 위치를 덮어 쓸 수 있다고 생각하여 LinearLayout을 확장하고 onFinishInflate를 오버라이드하고 arrangeButtons를 호출하여 동일한 문제가 발생했습니다. 나는 하하를 발견했다. – italianmike

관련 문제