2014-07-18 2 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

첫 번째로, 나는 당신에게 o Animation은 실제로 View의 위치를 ​​변경하지 않기 때문에 ObjectAnimators을 사용하여 Animation 대신이 작업을 수행하십시오. 그런 다음 애니메이터와 동시에 애니메이션을 수행하려면 AnimatorSet 클래스를 사용할 수 있습니다 (playTogether 메서드). 오래된 Android 버전을 지원해야하는 경우 Animator를 백 포트하는 NineOldAndroids 라이브러리가 있습니다. (애니메이션 제외) 또 다른 방법은 클래스와 먼저 내가 말할

+0

을 (레이아웃을 업데이트하기 위해) 귀하의 의견의의 LayoutParams을 변경 AnimationListener을 구현 AnimationSet는 (각 이동할보기 다시 당신이 애니메이션을 추가해야합니다)을 사용하는 것입니다 답장을 보내 주셔서 감사합니다. –

+0

@ Swr 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

하지만이 변환 클래스를 사용하려면 –

+0

그 클래스는 이미 안드로이드 SDK에 포함되어 있습니다 .. –