Android 點擊下彈動畫實現

jopen 10年前發布 | 21K 次閱讀 Android Android開發 移動開發

下彈動畫在很多應用都有使用,比如豌豆莢中的應用介紹界面,百度手機助手的應用介紹界面等。

只要熟悉android動畫的使用接口,制作動畫并不困難。 這里使用開源庫nineoldandroids,其實和android3.0 以上直接使用動畫接口是一樣的。

實現效果

具體可以看youku動畫:http://v.youku.com/v_show/id_XNjYyODgzNjQ4.html


PS, 搞了半天GIF 才能播放。原來是最大邊不能太大了。原來圖片尺寸太大,被默認轉成jpg了。現在總算能看到效果了。

Android 點擊下彈動畫實現

 

DropDownExample.java

    package com.buptfarmer.devapp;

import com.nineoldandroids.animation.Animator;  
import com.nineoldandroids.animation.AnimatorListenerAdapter;  
import com.nineoldandroids.animation.ValueAnimator;  

import android.app.Activity;  
import android.os.Bundle;  
import android.view.View;  
import android.view.View.OnClickListener;  
import android.view.ViewGroup;  

public class DropDownExample extends Activity implements OnClickListener {  
    private View mHolder;  
    private View mHolder2;  
//    private static final int DURATION = 2000;  

    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        initView();  
    }  

    private void initView() {  
        setContentView(R.layout.drop_down_example);  
        mHolder = findViewById(R.id.holder);  
        mHolder2 = findViewById(R.id.holder2);  
        mHolder.setOnClickListener(this);  
        mHolder2.setOnClickListener(this);  
    }  

    public static ValueAnimator createHeightAnimator(final View view, int start, int end) {  
        ValueAnimator animator = ValueAnimator.ofInt(start, end);  
        animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {  

            @Override  
            public void onAnimationUpdate(ValueAnimator valueAnimator) {  
                int value = (Integer) valueAnimator.getAnimatedValue();  

                ViewGroup.LayoutParams layoutParams = view.getLayoutParams();  
                layoutParams.height = value;  
                view.setLayoutParams(layoutParams);  
            }  
        });  
//        animator.setDuration(DURATION);  
        return animator;  
    }  

    public static void animateExpanding(final View view) {  
        view.setVisibility(View.VISIBLE);  

        final int widthSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);  
        final int heightSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);  
        view.measure(widthSpec, heightSpec);  

        ValueAnimator animator = createHeightAnimator(view, 0, view.getMeasuredHeight());  
        animator.start();  
    }  

    public static void animateCollapsing(final View view) {  
        int origHeight = view.getHeight();  

        ValueAnimator animator = createHeightAnimator(view, origHeight, 0);  
        animator.addListener(new AnimatorListenerAdapter() {  
            public void onAnimationEnd(Animator animation) {  
                view.setVisibility(View.GONE);  
            };  
        });  
        animator.start();  
    }  

    @Override  
    public void onClick(View v) {  
        if (v == mHolder) {  
            if (View.GONE == mHolder.findViewById(R.id.hiddenview).getVisibility()) {  
                animateExpanding(mHolder.findViewById(R.id.hiddenview));  
            } else {  
                animateCollapsing(mHolder.findViewById(R.id.hiddenview));  
            }  
        } else if (v == mHolder2) {  
            if (View.GONE == mHolder2.findViewById(R.id.hiddenview).getVisibility()) {  
                animateExpanding(mHolder2.findViewById(R.id.hiddenview));  
            } else {  
                animateCollapsing(mHolder2.findViewById(R.id.hiddenview));  
            }  
        }  
    }  
}  </pre><a style="text-indent:0px;" title="派生到我的代碼片" href="/misc/goto?guid=4959550749733890342" target="_blank"></a></div>

</div> </div> drop_down_example.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=" android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<LinearLayout  
    android:id="@+id/holder"  
    android:layout_width="fill_parent"  
    android:layout_height="wrap_content"  
    android:background="@color/greenyellow"  
    android:orientation="vertical" >  

    <LinearLayout  
        android:layout_width="fill_parent"  
        android:layout_height="wrap_content"  
        android:gravity="center_vertical"  
        android:orientation="horizontal"  
        android:paddingLeft="1dp" >  

        <ImageView  
            android:id="@+id/app_icon"  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:layout_gravity="center"  
            android:contentDescription="picture"  
            android:minWidth="32dp"  
            android:src="@drawable/ic_launcher" />  

        <TextView  
            android:id="@+id/app_label"  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:layout_marginLeft="5dp"  
            android:ellipsize="end"  
            android:gravity="left"  
            android:singleLine="true"  
            android:text="what's your dream?"  
            android:textSize="13sp" />  
    </LinearLayout>  

    <LinearLayout  
        android:id="@+id/hiddenview"  
        android:layout_width="fill_parent"  
        android:layout_height="40dp"  
        android:gravity="center_vertical"  
        android:orientation="horizontal"  
        android:paddingLeft="1dp"  
        android:visibility="gone" >  

        <TextView  
            android:id="@+id/hidden_text"  
            android:layout_width="wrap_content"  
            android:layout_height="fill_parent"  
            android:text="過個好年,馬上有房" />  
    </LinearLayout>  
</LinearLayout>  

<LinearLayout  
    android:id="@+id/holder2"  
    android:layout_width="fill_parent"  
    android:layout_height="wrap_content"  
    android:background="@color/blueviolet"  
    android:orientation="vertical" >  

    <LinearLayout  
        android:layout_width="fill_parent"  
        android:layout_height="wrap_content"  
        android:gravity="center_vertical"  
        android:orientation="horizontal"  
        android:paddingLeft="1dp" >  

        <ImageView  
            android:id="@+id/app_icon"  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:layout_gravity="center"  
            android:contentDescription="picture"  
            android:minWidth="32dp"  
            android:src="@drawable/ic_launcher" />  

        <TextView  
            android:id="@+id/app_label"  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:layout_marginLeft="5dp"  
            android:ellipsize="end"  
            android:gravity="left"  
            android:singleLine="true"  
            android:text="Self introduction"  
            android:textSize="13sp" />  
    </LinearLayout>  

    <LinearLayout  
        android:id="@+id/hiddenview"  
        android:layout_width="fill_parent"  
        android:layout_height="40dp"  
        android:gravity="center_vertical"  
        android:orientation="horizontal"  
        android:paddingLeft="1dp"  
        android:visibility="gone" >  

        <ImageView   
            android:contentDescription="avatar"  
            android:src="@drawable/avatar"  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:layout_gravity="center"/>  
        <TextView  
            android:id="@+id/hidden_text"  
            android:layout_width="wrap_content"  
            android:layout_height="fill_parent"  
            android:text="樂山好事,積極樂觀" />  
    </LinearLayout>  
</LinearLayout>  

</LinearLayout> </pre></div> </div> </div> 來自:http://blog.csdn.net/farmer_cc/article/details/18403001

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!