使用动画或线性布局

时间:2014-07-18 11:19:24

标签: android eclipse

当我点击按钮然后动画从左到右依次为菜单部分布局,根据这个动画,其他布局的宽度(家庭的头部应该展开或折叠..

我的问题是菜单布局的动画工作正常但其他布局的宽度不能同时折叠或展开,我该怎么办呢。

我的代码就是这个

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

2 个答案:

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

答案 1 :(得分:0)

首先,我建议你使用ObjectAnimators来实现这个而不是动画,因为动画实际上并没有改变视图的位置。然后,为了与Animators同时执行动画,您可以使用AnimatorSet类(playTogether方法)。如果您需要支持旧的Android版本,那么有一个NineOldAndroids库可以向后移植Animators。另一种方法(没有动画师)是使用AnimationSet(同样你应该为你要移动的每个视图添加动画)类和实现AnimationListener更改视图的Layoutparams(为了更新布局)< / p>