펌 OK (출처 표시), 상업적 이용 NO, 컨텐츠 변경 NO
따로 주석은 없으니 궁금한점은 댓글 남겨주세요
숫자를 초단위로 입력받아 계산버튼을 누르면 자동으로 시간,분,초로 반환해주고 시작버튼을 누르면
카운트다운이 시작됩니다.
쉐어드프레퍼런스를 이용해 시간값을 저장했기때문에 종료했다가 켜도 마지막 시간이 그대로 남아있습니다.
공부용으로 만드느라 타이머를 구현해주는 API등은 사용하지 않았기때문에 많이 미흡합니다.
MainActivity.java
package com.example.timer3;
import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
SharedPreferences prefs;
Editor ePref;
Button start,go,stop,allstop;
Boolean bool = true;
EditText in;
TextView tv;
String text,Str;
int t,hour,minute,second;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start = (Button)findViewById(R.id.start);
go = (Button)findViewById(R.id.go);
stop = (Button)findViewById(R.id.stop);
allstop = (Button)findViewById(R.id.allstop);
in = (EditText)findViewById(R.id.in);
tv = (TextView)findViewById(R.id.tv);
prefs = getSharedPreferences("Save",Activity.MODE_PRIVATE);
t = prefs.getInt("t",t);
sum();
Str = String.format("%02d시간 %02d분 %02d초",hour,minute,second);
tv.setText(Str);
in.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
in.setText("");
}
});
start.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
try{
text = in.getText().toString();
t = Integer.parseInt(text);
sum();
Str = String.format("%02d시간 %02d분 %02d초",hour,minute,second);
tv.setText(Str);
}catch(Exception e){}
}
});
go.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bool = true;
thread threadTest = new thread();
threadTest.setDaemon(true);
threadTest.start();
}
});
stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bool = false;
}
});
allstop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bool = false;
t = 0;
sum();
Str = String.format("%02d시간 %02d분 %02d초",hour,minute,second);
tv.setText(Str);
}
});
}
public class thread extends Thread{
public void run(){
while(bool){
handler.sendEmptyMessage(0);
try{
Thread.sleep(1000);
}catch (Exception e){}
}
}
}
Handler handler = new Handler(){
public void handleMessage(Message msg){
if(msg.what ==0){
if(t>0){
Log.d("fureun","XD");
t--;
sum();
Str = String.format("%02d시간 %02d분 %02d초",hour,minute,second);
tv.setText(Str);
}
}
}
};
public void sum(){
hour = t/3600;
minute = (t%3600)/60;
second = (t%3600)%60;
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
bool = false;
ePref = prefs.edit();
ePref.putInt("t",t);
ePref.commit();
}
}
activity_main.xml
'Android > 예제' 카테고리의 다른 글
XmlPullParser를 이용한 파싱 예제 (2) | 2013.07.24 |
---|