package com.example.frame_animation;
import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.inputmethod.EditorInfo;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
/**
* 帧动画示例
* 出自:http://blog.youkuaiyun.com/aminfo/article/details/7847761
*
* @author chenwenbiao
* @date 2013-12-2 下午7:37:07
* @version V1.0
*/
public class MainActivity extends Activity {
private String TAG = "MainActivity";
private ImageView animationIV;
private Button playButton , stopButton;
private AnimationDrawable animationDrawable;
/**
* 指定播放时长(单位:秒)
*/
private EditText timeEditText ;
/**
* 等播放的图片
*/
private int[] images = { R.drawable.audio_one, R.drawable.audio_two ,R.drawable.audio_three};
/**
* 设置了新播放时间
*/
private boolean newTime = true;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
animationIV = (ImageView) findViewById(R.id.animationIV);
playButton = (Button) findViewById(R.id.buttonA);
stopButton = (Button) findViewById(R.id.buttonB);
timeEditText = (EditText) findViewById(R.id.timeEditText);
timeEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_GO) {
Log.d(TAG , "heheh");
}
Log.d(TAG , "actionId :" + actionId);
return false;
}
});
animationIV.setImageResource(R.anim.animation3);
animationDrawable = (AnimationDrawable) animationIV.getDrawable();
animationDrawable.setOneShot(true);
playButton.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(newTime){
int runTime = Integer.parseInt(timeEditText.getText().toString()) * 1000;//转为秒
Log.d(TAG , "runTime:" + runTime);
int loop = 0;
if(runTime > 600){
runTime -= 600;//默认完整动画播放时间是0.6秒,
loop = runTime / 600 + 1;//计算还需要多少播放多少次动画
}
Log.d(TAG , "loop:" + loop);
for(int i = 0 ; i < loop ; i++){
for(int j = 0 ; j < 3 ; j++){
animationDrawable.addFrame(getResources().getDrawable(images[j]), 200);
}
}
newTime = false;
}
animationDrawable.stop();
animationDrawable.start();
}
});
stopButton.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v) {
animationDrawable.stop();
}
});
}
}
完整代码见附件。