在动画向右移动后,Android动画Bug不会让我点击

时间:2012-10-20 01:25:52

标签: java android

所以,这是我的问题?我有它滑出的地方,然后它将保持在那个位置,然后你应该能够再次点击它,它将滑回原来的位置。

但相反,我必须点击FIRST所在的位置。即使它被淘汰了。我希望在动画之后制作它我可以点击任何地方,它滑出来。

这是我的代码

   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;
        }

    }

1 个答案:

答案 0 :(得分: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);
    };
});

RelativeLayout替换为您的ImageView所属的任何布局。