项目要加一个随机抽取人名的抽奖需求,大体写了一下,效果不是很好,凑合着看吧
利用了Handler ,这个demo也可以当做一个定时器,本来,我就是根据定时器的想法修改的,
话不多说,都在代码里了。。。。
package com.example.AwardDemo;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
public class MyActivity extends Activity {
private TextView mTv;
private boolean begin;
private int i = 0;
private ArrayList<String> mList = new ArrayList<String>();
private Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
}
};
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTv = (TextView) findViewById(R.id.main_tv);
for (int i = 0;i < 20;i++){
mList.add("数据" + (i+1));
}
mTv.setText(mList.get(0));
}
public void onStart(View view){
if (begin){
begin = false;
}else{
begin = true;
mHandler.postDelayed(runnable, 5);
}
}
/*// 按顺序抽取
Runnable runnable = new Runnable() {
@Override
public void run() {
// handler自带方法实现定时器
try {
if (begin) {
i++;
if (i < mList.size()-1){
}else{
i = 0;
}
mTv.setText(mList.get(i));
mHandler.postDelayed(runnable, 5);
} else {
Toast.makeText(MainActivity.this,mList.get(i),Toast.LENGTH_LONG).show();
i = 0;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};*/
// 随机数抽取
Runnable runnable = new Runnable() {
@Override
public void run() {
// handler自带方法实现定时器
try {
if (begin) {
// 产生随机数
i = (int)(Math.random()*(mList.size()));
mTv.setText(mList.get(i));
mHandler.postDelayed(runnable, 5);
} else {
Toast.makeText(MyActivity.this, mList.get(i), Toast.LENGTH_LONG).show();
i = 0;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
}