1

我已经用谷歌搜索了很多关于这个问题的信息。

我有一个带有 3 个线性布局的线性布局。

第一个就像第二个的标题。最后一个只是一些其他内容。

我现在不想向上/向下滑动第二个布局。这段代码可以正常工作:

向下滑动:

Animation a = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.show_zeiten); 
                a.setFillAfter(true); 
                zeiten_sonstigeZeiten_Layout.startAnimation(a); 
                zeiten_sonstigeZeiten_Layout.setVisibility(View.VISIBLE);

我的问题是 3 布局在动画开始时立即跳转到他的新位置。我想实现 3. 布局顺利滑到第二个下方。

我的动画

<set xmlns:android="http://schemas.android.com/apk/res/android"  
android:fillEnabled="true"  
android:interpolator="@android:anim/accelerate_interpolator" >  
<translate       
      android:duration="@android:integer/config_mediumAnimTime"    
      android:fromYDelta="-100%"      
         android:toYDelta="0" /> 

有没有人提示我如何做出这种行为?

谢谢您的帮助!最好的问候施万迪

编辑:

我试图添加一个animationListener,但没有一个方法被调用:

Animation a = AnimationUtils.loadAnimation(context, R.anim.show_zeiten); 
                a.setFillAfter(true); 

                a.setAnimationListener(new AnimationListener() {
                    @Override
                    public void onAnimationStart(Animation animation) {
                        Log.e(TAG,"onAnimationStart");
                                }

                    @Override
                    public void onAnimationRepeat(Animation animation) {
                        Log.e(TAG,"onAnimationRepeat");
                                }

                    @Override
                    public void onAnimationEnd(Animation animation) {

                        Log.e(TAG,"onAnimationEnd");
                        zeiten_sonstigeZeiten_Layout.setVisibility(View.VISIBLE);

                                }
                });


                zeiten_sonstigeZeiten_Layout.startAnimation(a); 
4

1 回答 1

3

您正在动画开始时进行更改。最好的方法是添加一个AnimationListener并在动画结束后更改布局。

yourAnimationObject.setAnimationListener(new AnimationListener() {
        @Override
        public void onAnimationStart(Animation animation) {
                    }

        @Override
        public void onAnimationRepeat(Animation animation) {
                    }

        @Override
        public void onAnimationEnd(Animation animation) {
            // setLayoutParams here 
                    }
    });
于 2013-01-09T14:45:27.480 回答