Android中倒计时代码

布局:

maina.xml

<DigitalClock
        android:id="@+id/myClock"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_margin="10dp"
        android:textSize="30sp" />

    <TextView
        android:id="@+id/text_select"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/myClock"
        android:layout_centerHorizontal="true"
        android:text="@string/text_select"
        android:textSize="20sp" />
    
	<EditText android:id="@+id/minute"
	    android:layout_width="60dp"
	    android:layout_height="80dp"
	    android:layout_below="@id/text_select"
	    android:layout_alignLeft="@id/myClock"
	    android:layout_marginTop="20dp"
		android:inputType="number"
		android:gravity="center"
	    />
	
	<EditText android:id="@+id/second"
	    android:layout_width="60dp"
	    android:layout_height="80dp"
	    android:layout_below="@id/text_select"
		android:layout_toRightOf="@id/minute"
		android:layout_marginTop="20dp"	    
		android:inputType="number"
		android:gravity="center"
	    />

    <Button
        android:id="@+id/button_start"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:gravity="center"
        android:padding="10dp"
        android:text="@string/myButtonText"
        android:textSize="30sp" />


start.xml

<TextView android:id="@+id/myTime"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_margin="30dp"
        android:textSize="100sp"
        android:textColor="#FF0000"
        android:gravity="center"
        android:textStyle="bold" />


MainActivity.java

public class MainActivity extends Activity {

	Button startButton;
	EditText minuteText;
	EditText secondText;
	int minute;
	int second;
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.main);

		startButton = (Button) findViewById(R.id.button_start);
		minuteText = (EditText)findViewById(R.id.minute);
		secondText = (EditText)findViewById(R.id.second);
		
		startButton.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				if (!minuteText.getText().toString().equals("")) {
					minute = Integer.parseInt(minuteText.getText().toString());
				}
				if (!secondText.getText().toString().equals("")) {
					second = Integer.parseInt(secondText.getText().toString());
				}
				if (minute != 0 || second != 0) {
					System.out.println(minute+":"+second);
					
					ArrayList<Integer> list = new ArrayList<Integer>();
					list.add(minute);
					list.add(second);
					
					Intent intent = new Intent();
					intent.setAction("com.example.mytime.StartActivity");
					
					intent.putIntegerArrayListExtra("times", list);
					startActivity(intent);
				}
			}
		});
	}
	
	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		minute = 0;
		second = 0;
		super.onResume();
	}
}

StartActivity.java

public class StartActivity extends Activity{

	static int minute = -1;
	static int second = -1;
	final static String tag = "tag";
	TextView timeView;
	Timer timer;
	TimerTask  timerTask;
	Handler handler = new Handler(){
		public void handleMessage(Message msg) {
			System.out.println("handle!");
			if (minute == 0) {
				if (second == 0) {
					timeView.setText("Time out !");
					if (timer != null) {
						timer.cancel();
						timer = null;
					}
					if (timerTask != null) {
						timerTask = null;
					}
				}else {
					second--;
					if (second >= 10) {
						timeView.setText("0"+minute + ":" + second);
					}else {
						timeView.setText("0"+minute + ":0" + second);
					}
				}
			}else {
				if (second == 0) {
					second =59;
					minute--;
					if (minute >= 10) {
						timeView.setText(minute + ":" + second);
					}else {
						timeView.setText("0"+minute + ":" + second);
					}
				}else {
					second--;
					if (second >= 10) {
						if (minute >= 10) {
							timeView.setText(minute + ":" + second);
						}else {
							timeView.setText("0"+minute + ":" + second);
						}
					}else {
						if (minute >= 10) {
							timeView.setText(minute + ":0" + second);
						}else {
							timeView.setText("0"+minute + ":0" + second);
						}
					}
				}
			}
		};
	};
	
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		Log.v(tag, "log---------->onCreate!");
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		super.onCreate(savedInstanceState);
		setContentView(R.layout.start);
		timeView = (TextView)findViewById(R.id.myTime);
		
		if (minute == -1 && second == -1) {
			Intent intent = getIntent();
			ArrayList<Integer> times = intent.getIntegerArrayListExtra("times");
			minute = times.get(0);
			second = times.get(1);
		}
		
		timeView.setText(minute + ":" + second);
		
		timerTask = new TimerTask() {
			
			@Override
			public void run() {
				Message msg = new Message();
				msg.what = 0;
				handler.sendMessage(msg);
			}
		};
		
		timer = new Timer();
		timer.schedule(timerTask,0,1000);
		
	}
	
	@Override
	protected void onDestroy() {
		Log.v(tag, "log---------->onDestroy!");
		if (timer != null) {
			timer.cancel();
			timer = null;
		}
		if (timerTask != null) {
			timerTask = null;
		}
		minute = -1;
		second = -1;
		super.onDestroy();
	}
	
	@Override
	protected void onStart() {
		Log.v(tag, "log---------->onStart!");
		super.onStart();
	}
	
	@Override
	protected void onStop() {
		Log.v(tag, "log---------->onStop!");
		super.onStop();
	}

	@Override
	protected void onResume() {
		Log.v(tag, "log---------->onResume!");
		super.onResume();
	}
	
	@Override
	protected void onRestart() {
		Log.v(tag, "log---------->onRestart!");
		super.onRestart();
	}
	
	@Override
	protected void onPause() {
		Log.v(tag, "log---------->onPause!");
		super.onPause();
	}
	
}


本文本详细源码文件请访问:http://download.csdn.net/detail/chrp99/5646983

更多源码请访问:http://download.csdn.net/user/chrp99/uploads


 

原文地址:https://www.cnblogs.com/dyllove98/p/3155614.html