2014-07-18 54 views
0

当我点击按钮,然后一个动画从左到右和从右到左只对菜单部分布局和根据这个动画的其他布局的宽度(家长应展开或折叠..使用动画或线性布局

我的问题是,菜单布局动画工作正常,但其他布局宽度不崩溃或同时展开,如何才能做到这一点。

我的代码是这样

if(flagmenu) 
{ 
//menu layout set animation 
        lpmenu.startAnimation(animationFallout);   
        Thread t=new Thread(new Runnable() { 
         public void run() { 
          try { 
           Thread.sleep(2500); 
            runOnUiThread(new Runnable() { 
            public void run() { 
             lpmenu.setVisibility(View.GONE); 

} 
           }); 
         } catch (InterruptedException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 
         } 
        }); 
        t.start(); 
       // lpmenu.setVisibility(View.GONE); 
        flagmenu = false; 
       } 
       else 
       { 
        lpmenu.startAnimation(animationFalling); 
        lpmenu.setVisibility(View.VISIBLE); 
        flagmenu = true; 
       } 

回答

0

首先,我建议你t o使用ObjectAnimators来实现此目的而不是动画,因为动画实际上并未改变视图的位置。然后,为了与动画师同时执行动画,您可以使用AnimatorSet类(playTogether方法)。如果你需要支持旧的Android版本,那么有一个支持动画师的NineOldAndroids库。另一种方式(不包括动画)是使用AnimationSet(同样,你应该添加动画的每个视图要移动)类,并实现AnimationListener改变你的看法的LayoutParams(以更新配置)首先,我要说

+0

感谢您的回复 –

+0

@Er Swati Agrawal,所以我的回答很有帮助,或者它应该扩大? – Chaosit

2
Use this animation code here v is view group mean layout interpolatedTime of animation work fine for me . if code for collapse if u want expend then use + sine 
     Animation a = new Animation() { 
      @Override 
      protected void applyTransformation(float interpolatedTime, 
        Transformation t) { 
       if (interpolatedTime == 1) { 
        v.setVisibility(View.GONE); 
       } else { 
        v.getLayoutParams().width= initialwidth 
          - (int) (initialwidth * interpolatedTime); 
// replace - to + for expend 
        v.requestLayout(); 
       } 
      } 

      @Override 
      public boolean willChangeBounds() { 
       return true; 
      } 
     }; 
+0

但为此我必须使用Transformation类 –

+0

该类已包含在android sdk .. –