2016-08-15 84 views
0

我有线性布局,我想在点击时替换对方。 开始时:线性布局A可见,线性布局B不见了 我希望A点击消失,B点消失,反之亦然。 没有动画这一切都工作得很好,但是当我点击BB后设置动画不见了,但A是不可见的,虽然如果我点击它的位置日志给我,它是可见的 这里的代码,任何帮助将不胜感激视图和动画问题

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

回答

0

我这样做:

  1. 创建资源xml文件/阿尼姆重源目录。让我们把它myanimation.xml和写有:
<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。

  • 然后我写在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); 
    
    } 
    
  • 这一切。它工作得很好。希望这是你所要求的。

    +0

    感谢您的工作,但我如何设置旋转llRow.getHeight()/ 2? –

    +0

    @eshteghelcompany,不客气。我完全不知道这一点。如果只有旋转动画,那么你可以使用RotateAnimation类来达到这个目的。但是你有一套动画。所以它使事情变得复杂。也许这是另一篇文章的问题? =) –

    +1

    解决了它。 PivotX和PivotY = 50% –