通過ValueAnimator 來實現按鈕點擊後倒計時的效果

佈局文件:

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

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

</LinearLayout>

Java源文件:
package com.imooc.animator;

import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.TimeInterpolator;
import android.animation.ValueAnimator;
import android.animation.ValueAnimator.AnimatorUpdateListener;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class TimerActivity extends Activity implements OnClickListener{
	private Button btn;
	private boolean isClick = false;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.timer);
		
		btn = (Button) findViewById(R.id.button1);
		btn.setOnClickListener(this);
		
		if(!isClick){
			btn.setText("發送");
		}
		
	}
	@Override
	public void onClick(View v) {
		ValueAnimator mAnimator = ValueAnimator.ofInt(60,0);
		mAnimator.setDuration(1000*60);
		mAnimator.setInterpolator(new TimeInterpolator() {
			
			@Override
			public float getInterpolation(float input) {
				return input;
			}
		});
		mAnimator.addUpdateListener(new AnimatorUpdateListener() {
			
			@Override
			public void onAnimationUpdate(ValueAnimator animation) {
				Integer value = (Integer) animation.getAnimatedValue();
				if(value==0){
					btn.setText("重發");
					isClick = true;
				}else{
					btn.setText(value+"s");
				}
			}
		});
		
		mAnimator.addListener(new AnimatorListenerAdapter() {
			@Override
			public void onAnimationStart(Animator animation) {
				super.onAnimationStart(animation);
				//動畫開始後按鈕無效
				btn.setEnabled(false);
			}
			@Override
			public void onAnimationEnd(Animator animation) {
				super.onAnimationEnd(animation);
				//動畫結束後按鈕恢復
				btn.setEnabled(true);

			}
		});
		mAnimator.start();
	}
	

}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章