2012-04-24 8 views
1

ViewAnimatorでAndroidアニメーションに問題が発生しています。ここでAndroidのアニメーションが遅れて、最初のアニメーションが全長で実行されない

は私のコードは、(はい、私はXMLでアニメーション自体を行う必要があります知っているが、それは問題ではありません)です:すべての

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    final ViewAnimator animator = (ViewAnimator)getActivity().findViewById(R.id.animator); 
    Button next = (Button)getActivity().findViewById(R.id.buttonNext); 
    Button back = (Button)getActivity().findViewById(R.id.buttonBack); 
    next.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      animator.setInAnimation(inFromBottomAnimation()); 
      animator.setOutAnimation(outToTopAnimation()); 
      animator.showNext(); 
     } 
    }); 
    back.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      animator.setInAnimation(inFromTopAnimation()); 
      animator.setOutAnimation(outToBottomAnimation()); 
      animator.showPrevious(); 
     } 
    }); 

} 

private Animation inFromBottomAnimation() { 

    Animation inFromBottom = new TranslateAnimation(
    Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f, 
    Animation.RELATIVE_TO_PARENT, +1.0f, Animation.RELATIVE_TO_PARENT, 0.0f 
    ); 
    inFromBottom.setDuration(1000); 
    inFromBottom.setInterpolator(new AccelerateInterpolator()); 
    return inFromBottom; 
} 
private Animation outToTopAnimation() { 
    Animation outToTop = new TranslateAnimation(
    Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f, 
    Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, -1.0f 
    ); 
    outToTop.setDuration(1000); 
    outToTop.setInterpolator(new AccelerateInterpolator()); 
    return outToTop; 
} 

private Animation inFromTopAnimation() { 
    Animation inFromTop = new TranslateAnimation(
    Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f, 
    Animation.RELATIVE_TO_PARENT, -1.0f, Animation.RELATIVE_TO_PARENT, 0.0f 
    ); 
    inFromTop.setDuration(1000); 
    inFromTop.setInterpolator(new AccelerateInterpolator()); 
    return inFromTop; 
} 
private Animation outToBottomAnimation() { 
    Animation outToBottom = new TranslateAnimation(
    Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f,    
    Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, +1.0f 
    ); 
    outToBottom.setDuration(1000); 
    outToBottom.setInterpolator(new AccelerateInterpolator()); 
    return outToBottom; 
} 

まず、アニメーションは遅れています。アニメーションが始まる前に30秒待たなければなりません。第2に、ViewAnimatorで実行される最初のアニメーションは全く実行されません(次のビューにスキップする - 最初の問題のために0.5秒待ってから)。

これらの問題の回避策はありますか?

+0

argsのTranslateAnimationへの順序は正しいですか?あなたは "左"と "右"について話しますが、ゼロでないデルタはY値に当てはまるようです。 –

+0

@Lawrence D'Oliveiroああ、それは上下からスライドするように変更する前に左右からだった - 私はそれを忘れてしまった。 –

答えて

1

Androidの問題が発生しているようです。この問題は、Android 4.1ではあまり目立ちません。

関連する問題