1

私はこの問題について多くのことをグーグルで調べました。

3 つの LinearLayouts を含む LinearLayout があります。

最初のものは、2 番目のもののヘッダーのようなものです。最後のものは、他のコンテンツです。

2 番目のレイアウトを上下にスライドさせたくありません。次のコードで問題なく動作します。

滑り降りる場合:

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.レイアウトが2番目のレイアウトの下にスムーズにスライドするようにしたいと思います。

私のアニメーション

<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 に答える