2011-01-06 19 views
1

,我有以下視圖設置在我的活動之一太早應用android:src="@drawable/backyardPhoto"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:scaleType="centerInside"
android:padding="45dip"
>
</ImageView>
</LinearLayout>
的Android動畫的第一幀上的ImageView

沒有一個動畫集,這將顯示就好了。不過,我想顯示一個非常簡單的動畫。所以,在我的活動的在onStart覆蓋,我有以下幾點:

@Override 
public void onStart() { 
super.onStart(); 

    mPhotoImageView = (ImageView) findViewById(R.id.photoImageView); 

float offset = -25; 
int top = mPhotoImageView.getTop(); 

TranslateAnimation anim1 = new TranslateAnimation(
Animation.ABSOLUTE, 0, Animation.ABSOLUTE, 0, 
Animation.ABSOLUTE, top, Animation.ABSOLUTE, offset); 
anim1.setInterpolator(new AnticipateInterpolator()); 
    anim1.setDuration(1500); 
    anim1.setStartOffset(5000); 

    TranslateAnimation anim2 = new TranslateAnimation(
     Animation.ABSOLUTE, 0, Animation.ABSOLUTE, 0, 
     Animation.ABSOLUTE, offset, Animation.ABSOLUTE, top); 
anim2.setInterpolator(new BounceInterpolator()); 
    anim2.setDuration(3500); 
    anim2.setStartOffset(6500); 

    mBouncingAnimation = new AnimationSet(false); 
    mBouncingAnimation.addAnimation(anim1); 
    mBouncingAnimation.addAnimation(anim2); 

    mPhotoImageView.setAnimation(mBouncingAnimation); 
} 

的問題是,當活動顯示,第一次,照片的初始位置不與填充在屏幕的中央。它看起來像動畫的第一幀已經加載。只有在動畫完成後,photoImageView纔會「捕捉」回目標位置。

我看了看,看不到如何避免這個問題。我想讓photoImageView在屏幕中心開始,然後發生動畫,並將其返回到屏幕中心。動畫應該自己發生,而不需要用戶的交互。

回答

0

mPhotoImageView.getTop()將在onCreate()中返回0,您需要等到第一個佈局/繪圖發生後才能獲得View的正確位置。

+0

謝謝羅曼·蓋伊!這解決了它。 – Robert 2011-01-07 04:25:53