public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.genie_out);
genie = (ImageView) findViewById(R.id.genieout);
startService(new Intent(this, MyService2.class));
SceneAnimation come = new SceneAnimation(genie, comingout, durationcomingout);
SceneAnimation circled = new SceneAnimation(genie, circle,durationcircle);
come.play(1);
circled.play(1);
}
有一個ImageView,它需要整個屏幕,我想知道如何等待come.play(1)完成播放circle.play(1),就像這個圓圈先播放然後播放,因爲來的剩下的部分是一個較長的動畫,我想也知道這一點,因爲我有更多的服務,我想開始也跟着他們的方式停止,感謝您的時間等待ImageView中的一個動畫停止啓動另一個動畫?
class SceneAnimation {
public int x;
public ImageView mImageView;
public int[] mFrameRess;
public int[] mDurations;
public int mDuration;
public int mLastFrameNo;
public long mBreakDelay;
public SceneAnimation(ImageView pImageView, int[] pFrameRess, int[] pDurations)
{
mImageView = pImageView;
mFrameRess = pFrameRess;
mDurations = pDurations;
mLastFrameNo = pFrameRess.length - 1;
play(1);
}
public SceneAnimation(ImageView pImageView, int[] pFrameRess, int pDuration){
mImageView = pImageView;
mFrameRess = pFrameRess;
mDuration = pDuration;
mLastFrameNo = pFrameRess.length - 1;
mImageView.setImageResource(mFrameRess[0]);
playConstant(1);
}
public SceneAnimation(ImageView pImageView, int[] pFrameRess, int pDuration, long pBreakDelay){
mImageView = pImageView;
mFrameRess = pFrameRess;
mDuration = pDuration;
mLastFrameNo = pFrameRess.length - 1;
mBreakDelay = pBreakDelay;
mImageView.setImageResource(mFrameRess[0]);
playConstant(1);
}
public void play(final int pFrameNo)
{
mImageView.postDelayed(new Runnable(){
public void run() {
mImageView.setImageResource(mFrameRess[pFrameNo]);
if(pFrameNo == mLastFrameNo)
{
return;}
else
play(pFrameNo + 1);
}
}, mDurations[pFrameNo]);
}
public void playConstant(final int pFrameNo){
mImageView.postDelayed(new Runnable(){
public void run() {
mImageView.setImageResource(mFrameRess[pFrameNo]);
if(pFrameNo == mLastFrameNo)
playConstant(0);
else
playConstant(pFrameNo + 1);
}
}, pFrameNo==mLastFrameNo && mBreakDelay>0 ? mBreakDelay : mDuration);
}
};
你可能應該使用'AnimationListener'。將animtionlistener設置爲第一個動畫,並在'onAnimationEnd'開始第二個動畫。 – Wenhui
它不是一個動畫類AnimationListener不知道什麼時候結束,生病把代碼放到SceneAnimation中我不知道如何讓AnimationListener通過類運行,也許你可以幫助 – JRowan
我可能是錯的,但是SceneAnimation看起來像Frame Animation 。你有沒有考慮過使用['AnimationDrawable'](http://developer.android.com/reference/android/graphics/drawable/AnimationDrawable.html),它支持逐幀動畫。否則,您可以提供您自己的動畫偵聽器。我將在下面發佈答案。 – Wenhui