2014-11-20 2 views
3

는 사실은 내가 (widthheight에서) matchParentLinear Layout 있고, 지금은 처음에 볼 수 없습니다해야하는 사항 다른 layout (linearLayout 그 이하)를 작성해야합니다.안드로이드에서 애니메이션을 얻는 방법?

활동 인이 실행되면 그 숨겨진 레이아웃에 애니메이션을 적용하려고합니다.

숨겨진 layout은 위쪽에서 아래쪽으로 와야합니다. 나는이 애니메이션을 어떻게 달성 해야할지 모르겠다 ?? 나는 처음에는 보이지 않아야하는 레이아웃을 만드는 방법을 모르며, 지연 후에는 화면 아래에서 보여야하고 옆으로 오게된다.

여기에 XML의 내 코드는 당신이 숨기고 다른 레이아웃을 가지고 싶어 코드에있는 레이아웃 언급하지 않은

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<LinearLayout 
    android:id="@+id/imageupLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:gravity="center" 
     android:orientation="vertical" > 

     <ImageView 
      android:id="@+id/imgview" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:background="@drawable/logo" /> 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/hided_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom" 
     android:background="#56a24b" 
     android:orientation="vertical" 
     android:visibility="visible" > 

     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_marginTop="15dip" 
      android:background="@drawable/btn_bg" 
      android:gravity="center" > 

      <Button 
       android:id="@+id/btn_login" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:layout_margin="2dip" 
       android:background="@drawable/btn_login" /> 
     </LinearLayout> 

     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_marginTop="10dip" 
      android:background="@drawable/btn_bg" 
      android:gravity="center" > 

      <Button 
       android:id="@+id/btn_register" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:layout_margin="2dip" 
       android:background="@drawable/btn_register" /> 
     </LinearLayout> 

     <TextView 
      android:id="@+id/tv_just_explore" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="20dip" 
      android:layout_marginTop="20dip" 
      android:gravity="center" 
      android:text="JUST EXPLORE" 
      android:textColor="#FFFFFF" 
      android:textSize="15dip" 
      android:textStyle="bold" /> 
    </LinearLayout> 
</LinearLayout> 

+1

당신은 링크에 주어진 응답을 따를 수 있습니다. [http://stackoverflow.com/questions/18232372/slide-a-layout-up-from-bottom-of-screen] –

+0

시도해 봅시다 .... –

답변

3

예 했어요. 여기 내 코드는 다른 사람들을 도울 수 있습니다 ...

내 MainActivity. 내 activity_main에서

public class MainActivity extends ActionBarActivity { 

private View hiddenPanel; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    hiddenPanel = findViewById(R.id.hidden_panel); 
     } 

public void slideUpDown(final View view) { 
     if (!isPanelShown()) { 
      // Show the panel 
      Animation bottomUp = AnimationUtils.loadAnimation(this, 
        R.anim.bottom_up); 

      hiddenPanel.startAnimation(bottomUp); 
      hiddenPanel.setVisibility(View.VISIBLE); 
     } 
     else { 
      // Hide the Panel 
      Animation bottomDown = AnimationUtils.loadAnimation(this, 
        R.anim.bottom_down); 

      hiddenPanel.startAnimation(bottomDown); 
      hiddenPanel.setVisibility(View.GONE); 
     } 
    } 

    private boolean isPanelShown() { 
     return hiddenPanel.getVisibility() == View.VISIBLE; 
    } 

}

<?xml version="1.0" encoding="utf-8"?> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:text="@string/hello_world" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    android:text="@string/hello_world" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:onClick="slideUpDown" 
    android:text="Slide up/down" /> 

<RelativeLayout 
    android:id="@+id/hidden_panel" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@android:color/white" 
    android:visibility="gone" > 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/app_name" 
     android:layout_centerInParent="true" 
     android:onClick="slideUpDown" /> 
</RelativeLayout> 

bottom_down.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<translate 
android:fromYDelta="0%p" 
android:toYDelta="100%p" 
android:fillAfter="true" 
android:interpolator="@android:anim/linear_interpolator" 
android:duration="500" /> 
</set> 

bottom_up.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<translate 
    android:fromYDelta="75%p" 
    android:toYDelta="0%p" 
    android:fillAfter="true" 
    android:duration="500" /> 
</set> 
0

파일입니다. 그러나 나는 당신에게 당신이 적용 할 수있는 일반적인 코드를 줄 것입니다. 가시성 GONE 또는 사용에 따라 최대 개까지 그것의 INVISIBLE 설정 사이

layoutYouHideInitially.setVisibility(View.VISIBLE); 
layoutYouHideInitially.animate().alpha(1).setDuration(500); 
layoutYouWannaHide.setVisibility(View.GONE); 
layoutYouWannaHide.animate().alpha(0).setDuration(500); 

아래 사용을 애니메이션 동안 처음 숨길 레이아웃 첫째, android:visibility = "gone"를 설정하고 활동한다. 그리고 애니메이션의 경우 alpha 대신 translationX, scaleX 등의 다른 옵션을 사용할 수 있습니다. 문제가 발생하면 의견을 말하십시오. 도와 줄 수있어서 기뻐!

관련 문제