본문 바로가기
안드로이드

[안드로이드] TextView에 1초마다 시간 업데이트 하기

by 호군 2011. 4. 6.
반응형
TextView에 text 부분을 1초마다 시간을 가져와 업데이트 하는 소스코드 입니다. 단순히 이러한 동작만을 위하는 것이라기 보다는 View객체를 화면에 그릴 때, 아래의 코드와 같이 접근한다면 가능하다는 것을 보여주는 것입니다.


코드를 보시면 timer안에 Handler를 이용하여 Runnable을 수행합니다.
Handler는 TextView의 handler를 얻어옵니다.
Runnalbe에는 TextView의 text를 변경하는 동작을 수행하는 코드가 작성되어있습니다.
100번의 말보다 1번 코드를 보시는게 낫겠죠?

public class TimeTest extends Activity { 
    TextView timeTextView;
    String mMonthList[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep",  "Oct", "Nov", "Dec"};
 
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        timeTextView = (TextView)findViewById(R.id.dateTimeText);
        Timer timeTimer = new Timer();
        timeTimer.schedule(timeTimerTask, 30, 1000);
    }
    TimerTask timeTimerTask = new TimerTask(){
        public void run(){
            Calendar calendar = Calendar.getInstance(Locale.KOREA);
            Date date = calendar.getTime(); 
            String timeAmPm = "";
            if(calendar.get(Calendar.AM_PM) == 0)
                timeAmPm= "am";
            else{
                timeAmPm= "pm";
    if(12 < date.getHours())
        date.setHours(date.getHours() - 12);
            }
   
            final String time = mMonthList[date.getMonth()] + " " + String.valueOf(date.getDay()) + " " + String.valueOf(date.getHours()) + ":" + String.valueOf(date.getMinutes()) + timeAmPm;
   
            Handler timeHandler = timeTextView.getHandler();
            timeHandler.post(new Runnable(){
                public void run(){
                    Log.d("timeTimerTask", "Time : " + time);     
                    timeTextView.setText(time);
                }
            }); 
        } //end run
   
}; //end TimerTask

    protected void onStop() {
        timeTimerTask.cancel();  
        timeTimer.cancel(); 
        super.onStop();
    }

} //end TimeTest
반응형