0

我想通过屏幕特定 XY 位置的平移动画制作布局动画。这发生得非常正确。现在问题开始时动画完成布局再次转到屏幕的右上角。我希望布局保持在动画结束的相同位置。

 AnimationListener animationListener = new AnimationListener() {

        @Override
        public void onAnimationEnd(Animation arg0) {
            drawer_layout.setVisibility(View.VISIBLE);

        }

        @Override
        public void onAnimationRepeat(Animation animation) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onAnimationStart(Animation animation) {
            drawer_layout.setVisibility(View.VISIBLE);

        }

    };

    final Animation animTranslate = AnimationUtils.loadAnimation(this,
            R.anim.top_to_bottom_in);

    animTranslate.setAnimationListener(animationListener);

    drawer_layout = (LinearLayout) findViewById(R.id.drawer_layout);
    button.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            // bitmapBackground = CaptureBackground();

            faded_layout.setBackgroundColor(Color.parseColor("#50ffffff"));

            // HandleDropAnimation(drawer_layout);
            drawer_layout.startAnimation(animTranslate);
        }
    });

这是我的xml。

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1000"
android:fromYDelta="25%p"
android:toYDelta="50%p" />
4

2 回答 2

2

称呼

animTranslate.setFillAfter(true);

在开始动画之前。根据java文档

如果 fillAfter 为 true,则此动画执行的转换将在完成后持续存在。

于 2012-10-19T09:44:17.227 回答
1

在动画开始之前使用

animTranslate.setFillAfter(true);
于 2012-10-19T09:51:52.370 回答