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;
}
首先,動畫被延遲。在動畫開始之前,我必須等待半秒鐘。其次,在ViewAnimator中運行的第一個動畫根本無法運行(只是跳到下一個視圖 - 在第一個問題後等待半秒鐘),或者運行速度太快,無法察覺。
是否有任何解決方法/解決這些問題?
你確定參數TranslateAnimation的順序是正確的嗎?你談論「左」和「右」,但非零三角洲似乎適用於Y值。 – 2012-04-25 03:18:14
@勞倫斯D'Oliveiro啊哎呀,它是從左側和右側,我改變它從頂部和底部滑動之前 - 我忘了重命名它。 – 2012-04-25 07:09:45