2014-02-07 4 views
1

앱에서 작업하는 중 하나의 XML 파일에 2 개의 선형 레이아웃이 있습니다. 시작시 하나의 선형 레이아웃이 보이지 않게 설정됩니다. 사용자가 버튼을 누르면 눈에 보이는 선형 레이아웃이 90 % 아래로 내려 가서 두 번째 선형 레이아웃을 표시해야합니다. 애니메이션 파일을 작성하고 잘 작동하도록했습니다. 내 문제는 애니메이션이 끝나면 다시보기로 돌아 간다는 것입니다. 두 번째 선형 레이아웃을 표시하기 위해 첫 번째 선형 레이아웃을 아래로 어떻게 이동합니까? 어떤 도움이 필요합니까?선형 레이아웃을 아래로 이동

MainActivity 파일 :

public class MainActivity extends Activity implements OnClickListener,AnimationListener{ 

LinearLayout main,menu; 
    Button B; 
    Animation slideUp; 
    LinearLayout.LayoutParams params; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
     slideUp = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.main_slide_down); 
    main=(LinearLayout)findViewById(R.id.maincontent); 
    menu=(LinearLayout)findViewById(R.id.mainmenu); 
    B= (Button)findViewById(R.id.button1); 
    B.setOnClickListener(this); 



    main.setLayoutAnimationListener(this); 




} 



@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    switch(v.getId()) 
    { 
     case R.id.button1: 
     // main.setAnimation(slideUp); 
     menu.setVisibility(View.VISIBLE); 
     main.startAnimation(slideUp); 


     break; 

    } 

} 

}

XML 파일 :

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 

tools:context=".MainActivity" > 


<LinearLayout 
    android:layout_height="match_parent" 
    android:layout_width="match_parent" 
    android:id="@+id/mainmenu" 
    android:background="#6F26F0" 
    android:visibility="invisible" 
    android:orientation="vertical" 
    > 
    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/ic_launcher" /> 

</LinearLayout> 


    <LinearLayout 
     android:layout_height="match_parent" 
    android:layout_width="match_parent" 
    android:id="@+id/maincontent" 
     android:background="#3BED00" 
     android:orientation="vertical" 
    > 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Button" /> 



    </LinearLayout> 





    </RelativeLayout> 
+0

slideup.setFillAfter (true)를 호출 해 보았습니까? – jacobhyphenated

답변

0

어떻게 내가 두 번째 선형 레이아웃을 보여주기 위해 아래 첫 번째 선형 레이아웃을 이동합니까?

그래서 여기 당신은 간다 :

  main.startAnimation(slideUp); 
      slideUp.setFillAfter(true); 
      slideUp.setAnimationListener(new AnimationListener() 
      { 

       @Override 
       public void onAnimationStart(Animation animation) {} 

       @Override 
       public void onAnimationRepeat(Animation animation) {} 

       @Override 
       public void onAnimationEnd(Animation animation) { 

       // Make Your 1st Linearlayout Invisible/Gone & 
       // Make your 2nd Linearlayout Visible here. 

       } 
      }); 
1

이의이 애니메이션을 폐기하고 대신 레이아웃 트릭을 사용하자! 여기

은 당신이해야 할 작업은 다음과 같습니다, • 루트에 android:animateLayoutChanges="true" 추가

XML

• 변경 루트 레이아웃 LinearLayout

에 MAINMENU & maincontent


안드로이드 : ID = "@ + ID/MAINMENU"

• 변경 가시성 • android:layout_weight="1"


안드로이드의 무게를 추가 android:visibility="gone"

• 변경 높이

android:layout_height="0dp"에에 : id = "@ + id/maincontent"

• 높이를 android:layout_height="wrap_content"

으로 변경하십시오. 이제 어떻게 되나요?

끝났습니다! 메인 메뉴의 가시성을 버튼 클릭만으로 변경할 수 있습니다!

+0

그레이트 솔루션! 이렇게 할 때 애니메이션 이벤트에 연결할 수 있습니까? 애니메이션이 끝나면 IE에서 알 수 있습니까? – lostintranslation

+0

@lostintranslation 저는 그것에 대해 잘 모르겠습니다. 아마도 시작/끝 위치를 감지하는 청취자를 들여다 볼 수 있습니다. –

+0

요청한 애니메이션입니다! – xanexpt

0

90 % 공간 (0.9 레이아웃 무게)을 차지하려면 레이아웃 가중치 속성을 올바르게 설정해야 할 수 있습니다. Visibility는 Visible과 Gone간에 전환 할 수 있습니다.

관련 문제