以编程方式获得Y位置百分比

时间:2014-09-26 11:50:49

标签: android

我正在用视图做一些翻译动画。我正在尝试两种方式:通过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
        }
    });

定义fromYDeltatoYDelta值(图像只是在Y轴上移动)时出现问题。在xml中,我使用百分比(%)来实现它,它以我需要的方式工作,但我不知道如何以编程方式设置值,但是以编程方式设置。

1 个答案:

答案 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,也可以监听动画事件。