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秒待ってから)。
これらの問題の回避策はありますか?
argsのTranslateAnimationへの順序は正しいですか?あなたは "左"と "右"について話しますが、ゼロでないデルタはY値に当てはまるようです。 –
@Lawrence D'Oliveiroああ、それは上下からスライドするように変更する前に左右からだった - 私はそれを忘れてしまった。 –