Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 利用TimerTask實現ImageView圖片播放效果

Android 利用TimerTask實現ImageView圖片播放效果

編輯:關於Android編程

在項目開發中,往往 要用到圖片播放的效果,今天就用TimerTask和ImageView是實現簡單的圖片播放效果。

其中,TimerTask和Timer結合一起使用,主要是利用TimerTask的迭代延時等時間段處理事件的機制。

具體實例如下:

1.layout xml代碼



    
    

2.MainActivity代碼

package com.example.myimageplaydemo;

import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity implements OnClickListener {

	private Button startBtn, stopBtn,restartBtn;
	private ImageView imageIv;
	private Timer timer;
	private TimerTask timerTask;
	private int count = 0;

	private Handler handler = new Handler() {
		@Override
		public void handleMessage(Message msg) {
			int myCount = Integer.valueOf(msg.obj.toString());

			switch (msg.what) {
			case 1:
				setImageViewSrc(myCount);
				break;
			case 2:
				stopTimer();
				break;
			case 3:
				setImageViewSrc(myCount);
				break;
			}
		}
	};

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

	@Override
	public void onStart() {
		super.onStart();

		startBtn = (Button) this.findViewById(R.id.my_start_btn);
		stopBtn = (Button) this.findViewById(R.id.my_stop_btn);
		restartBtn = (Button) this.findViewById(R.id.my_restart_btn);
		imageIv = (ImageView) this.findViewById(R.id.image_iv);

		startBtn.setOnClickListener(this);
		stopBtn.setOnClickListener(this);
		restartBtn.setOnClickListener(this);
	}

	@Override
	public void onStop() {
		super.onStop();
		stopTimer();
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()) {
		case R.id.my_start_btn:
			if (timerTask == null) {
				timer = new Timer();
				//延遲一秒,迭代一秒設置圖片
				timerTask = new TimerTask() {

					@Override
					public void run() {
						++count;
						handler.sendMessage(handler.obtainMessage(1, count));
					}
				};
				timer.schedule(timerTask, 1000, 1000);
			} else {
				handler.sendMessage(handler.obtainMessage(1, count));
			}
			break;
		case R.id.my_stop_btn:
			handler.sendMessage(handler.obtainMessage(2, count));
			break;
		case R.id.my_restart_btn:
			if (timerTask == null) {
				count = 0 ;
				timer = new Timer();
				timerTask = new TimerTask() {

					@Override
					public void run() {
						count++;
						handler.sendMessage(handler.obtainMessage(3, count));
					}
				};
				timer.schedule(timerTask, 1000, 1000);
			} else {
				handler.sendMessage(handler.obtainMessage(3, 0));
			}
		}
	}

	/**
	 * 根據count循環對ImageView設置圖片
	 * @param count
	 */
	private void setImageViewSrc(int count) {
		int myCount = count % 7;
		switch (myCount) {
		case 0:
			imageIv.setImageResource(R.drawable.onea);
			break;
		case 1:
			imageIv.setImageResource(R.drawable.oneb);
			break;
		case 2:
			imageIv.setImageResource(R.drawable.onec);
			break;
		case 3:
			imageIv.setImageResource(R.drawable.oned);
			break;
		case 4:
			imageIv.setImageResource(R.drawable.onee);
			break;
		case 5:
			imageIv.setImageResource(R.drawable.onef);
			break;
		case 6:
			imageIv.setImageResource(R.drawable.oneg);
			break;
		}
	}
	
	/**
	 * 銷毀TimerTask和Timer
	 */
	private void stopTimer(){
		if (timerTask != null) {
			timerTask.cancel();
			timerTask = null;
		}
		
		if(timer != null){
			timer.cancel();
			timer = null;
		}
	}

}

其中
			if (timerTask == null) {
				timer = new Timer();
				//延遲一秒,迭代一秒設置圖片
				timerTask = new TimerTask() {

					@Override
					public void run() {
						++count;
						handler.sendMessage(handler.obtainMessage(1, count));
					}
				};
				timer.schedule(timerTask, 1000, 1000);
			} else {
				handler.sendMessage(handler.obtainMessage(1, count));
			}
timerTask延遲一秒後再每秒設置不一樣的圖片,根據count進行循環的播放。

源碼地址:http://download.csdn.net/detail/a123demi/7736643


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved