0

それで、ここに私の問題がありますか?スライドしてその位置にとどまり、もう一度クリックすると元の場所にスライドして戻ります。

しかし、代わりに、最初にあった場所をクリックする必要があります。滑り出しても。スライドアウトしたところをどこでもクリックできるアニメーションにしたいです。

これが私のコードです

   public void sideBar()
   {

       ImageView sidebar = (ImageView)findViewById(R.id.sidebar);

       if(out == 0)
       {
       mSlideInRight = AnimationUtils.loadAnimation(this, R.anim.slide_in_right);
       mSlideInRight.setFillAfter(true);
       sidebar.startAnimation(mSlideInRight);
       out= 1;
       }
       else if(out == 1)
       {
               mSlideInLeft = AnimationUtils.loadAnimation(this, R.anim.slide_in_left);
               sidebar.startAnimation(mSlideInLeft);
               out=0;
       }

   }

これはクリックしたときのコードです

public void onClick(View v) {
        ImageView sidebar = (ImageView)findViewById(R.id.sidebar);
         ImageView popup = (ImageView)findViewById(R.id.popup);
         ImageView popup2 = (ImageView)findViewById(R.id.popup2);

        switch(v.getId())
        {           
            case R.id.sidebar:
                sideBar();
            break;
        }

    }
4

1 に答える 1

0

アニメーションはサイドバーImageViewの描画方法にのみ影響し、実際の位置には影響しません。アニメーションが完了したら、サイドバーのレイアウトパラメータを目的の位置に更新する必要があります。これは、アニメーションの実行中または完了後に位置を更新する場合、またはアニメーションの開始時に位置の変更を実行AnimationListenerする場合は呼び出しの直後に行うことができます。startAnimation

mSlideInRight.setAnimationListener(new AnimationListener() {
    @Override
    public void onAnimationStart(Animation anim) {};

    @Override
    public void onAnimationRepeat(Animation anim) {};

    @Override
    public void onAnimationEnd(Animation anim) {
        RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(...);
        // Set properties of layoutParams here
        sidebar.setLayoutParams(layoutParams);
    };
});

RelativeLayoutImageViewが子であるレイアウトに置き換えます。

于 2012-10-24T00:42:56.390 に答える