视图和动画的问题

时间:2016-08-15 09:07:19

标签: android animation view android-linearlayout

我有线性布局,我想在点击时互相替换。 开始时:线性布局A可见,线性布局B消失 我希望当点击A消失而B可见时,反之亦然。 没有动画它一切都工作得很好,但是当我点击B B后设置动画消失了,但是A不可见但是如果我点击它的位置,Log会告诉我它是可见的 这里的代码,任何帮助将不胜感激

private void switchRowItems(final LinearLayout toBeHiddenRow,final LinearLayout toBeShownRow){
    toBeHiddenRow.animate()
            .rotation(toBeHiddenRow.getHeight()/2)
            .alpha(0.0f)
            .setDuration(300)
            .setListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationEnd(Animator animation) {
                    super.onAnimationEnd(animation);
                    toBeHiddenRow.clearAnimation();
                    toBeHiddenRow.setVisibility(View.GONE);
                    toBeShownRow.clearAnimation();
                    toBeShownRow.setVisibility(View.VISIBLE);
                }
            });
    //toBeShownRow.clearAnimation();
   // toBeShownRow.setVisibility(View.VISIBLE);

}

和点击检查器一样简单:

 if (llRowTwoItemOne.getVisibility() == View.VISIBLE) {
        Log.d("llRowTwoItemOne","visible");
    } else {
        Log.d("llRowTwoItemOne","not visible");
    }

1 个答案:

答案 0 :(得分:0)

我是这样做的:

  1. 在res / anim资源目录中创建xml文件。我们称之为myanimation.xml并写在那里:
  2. <set xmlns:android="http://schemas.android.com/apk/res/android">
    
    
    <rotate
            android:fromDegrees="0"
            android:toDegrees="360"
            android:duration="300">
        </rotate>
    
        <alpha
            android:fromAlpha="1.0"
            android:toAlpha="0.0"
            android:duration="200">
        </alpha>
    </set>
    

    你可以看到它是你需要的一组动画:旋转和alpha。

    1. 然后我在switchRowItem函数中写这个:

      private void switchRowItems(final LinearLayout toBeHiddenRow, final LinearLayout toBeShownRow){
      
      Animation anim = AnimationUtils.loadAnimation(this, R.anim.myanimation);
      anim.setAnimationListener(new Animation.AnimationListener() {
          @Override
          public void onAnimationStart(Animation animation) {
      
          }
      
          @Override
          public void onAnimationEnd(Animation animation) {
      
              toBeHiddenRow.setVisibility(View.GONE);
              toBeShownRow.setVisibility(View.VISIBLE);
          }
      
          @Override
          public void onAnimationRepeat(Animation animation) {
          }
      });
      toBeHiddenRow.startAnimation(anim);
      
      }
      
    2. 这就是全部。它工作得很好。希望这就是你要求的。