How do I get animation in Android?

Actually I have Linear Layout

one which matchParent

(in width

and height

) and now I need to create another one layout

(below this linearLayout

) which should not be visible initially,

And when my work starts, I want to bring this hidden layout to life.

The hidden one layout

should be from bottom to top. I don't know how to achieve this animation? I don't know how to create a layout that shouldn't be visible initially, and after a delay, it should show from the bottom of the screen and sideways.

here is my xml file code

<?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>

      

+3


source to share


2 answers


Yes, I did it. Here is my code, maybe it helps others ...

In my MainActivity.

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

      

}

In my activity_main

<?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>

      

+3


source


You haven't specified which layout in the code you want to hide, and bring a different layout. But I will give you a generic code that you can apply. First for the layout you want to hide initially, set android:visibility = "gone"

and in your activity during animation below

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

      



Between visibility setting GONE

or INVISIBLE

it is up to you based on usage. And for animation, you have other options that you can explore instead of alpha

, for example translationX

, scaleX

etc. Please comment if you get stuck with any issue. I am glad to help!

0


source







All Articles