我正在用视图做一些翻译动画。我正在尝试两种方式:通过xml和编程。
这是我通过xml定义翻译的方式:
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="0%" android:toYDelta="-70%" android:duration="1000"/>
</set>
这种方式工作正常,但我已经意识到我最好以编程方式使用animationListener,我可以定义动画结束时发生的动作。
这是我以编程方式执行的操作:
slide_up = new TranslateAnimation(valuesContainer.getX(),
valuesContainer.getX(),
valuesContainer.getY(),
valuesContainer.getY() - 70);
slide_up.setDuration(1000);
slide_up.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
//SOMETHING HAPPENS
}
});
定义fromYDelta
和toYDelta
值(图像只是在Y轴上移动)时出现问题。在xml中,我使用百分比(%)来实现它,它以我需要的方式工作,但我不知道如何以编程方式设置值,但是以编程方式设置。
答案 0 :(得分:0)
我已经找到了结合这两种方法的解决方案。
我在像这样的xml中定义动画,称为f.e. slide_up_anim.xml
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="0%" android:toYDelta="-70%" android:duration="1000"/>
</set>
然后,我以这种方式为此动画设置AnimationListener:
slide_up = AnimationUtils.loadAnimation(getActivity(), R.anim.slide_up_anim);
slide_up.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
}
});
这样我可以用百分比定义fromYDelta和toDelel,也可以监听动画事件。