Contents 학습목표 이벤트를 처리하는 여러 가지 형식과 각 형식의 장단점에 대해 상세하게 연구하고 기본적인 이벤트에 대한 실습을 한다. 사용자의 입력을 자유자재로 처리하기 위해서 반드시 습득해야 하는 중요한 기술 실습. 학습내용 이벤트 핸들러 여러 가지 이벤트.

Slides:



Advertisements
Similar presentations
이벤트 처리  GUI 운영체제는 이벤트 드리븐으로 동작한다.  사용자와 상호 작용하려면 이벤트를 매끄럽게 처리하는 기술이 필요하다.  안드로이드에는 이벤트를 처리하는 다양한 방법이 있다.  팀 작업을 위해 모든 방법을 숙지해야 하며 자바의 고급 문법이 사용된다.
Advertisements

삼성소프트웨어멤버십 20 th 박희근 ( A n d r o i d.
Android Application 데이터베이 스. 데이터베이스 활용하 기  안드로이드에 쓰이는 DBMS 의 이름은 SQLite.  SQLite 는 경량의 임베디드 데이터베이스 엔젠이며, 아이폰, 파이어폭스 등 여 러 곳에서 이미 많이 채택된 검증된 엔진이다. 
Unlocking Android 안드로이드 패키지 (1/2) 2 Unlocking Android 안드로이드 패키지 (2/2) 3.
6 메 뉴.
기본위젯과 레이아웃 둘째 마당 - Chapter 01 Do It! 안드로이드 앱 프로그래밍 Jun. 2013
목차 Contents 무선인터넷용 비밀번호 설정방법 Windows 7 Windows 8 Windows XP MAC OS.
어서와 Java는 처음이지! 제20장 실전프로젝트 #2.
CHAP 8. 그래픽.
CHAP 18. 멀티미디어.
CHAP 10. 액티비티와 인텐트.
Android Programming 고급위젯
Android Application 애플리케이션 위젯.
CHAP 19. 구글맵.
Contents 학습목표 지금까지 배운 내용을 총정리하며 개발 툴에 대한 고급 사용법을 익힌다. 학습내용 개발툴.
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Chapter 10. AWT 이벤트.
Contents 학습목표 이벤트를 처리하는 여러 가지 형식과 각 형식의 장단점에 대해 상세하게 연구하고 기본적인 이벤트에 대한 실습을 한다. 사용자의 입력을 자유자재로 처리하기 위해서 반드시 습득해야 하는 중요한 기술 실습. 학습내용 이벤트 핸들러 여러 가지 이벤트.
CHAP 7. 메뉴와 대화상자.
Contents 학습목표 Canvas와 Paint 객체를 통해 화면에 원하는 도형을 그리고 속성을 변경하는 기본적인 방법에 대해 소개한다. 토스트로 메시지를 출력하는 방법과 스피커를 통해 소리를 출력하는 방법에 대해서도 알아본다. 학습내용 캔버스 그리기 객체 쉐이더 그외.
Java Seminar 6.
Ch.07-5 xml-rpc 사용하기 김상엽.
CHAP 4. 이벤트 처리.
CHAP 6. 이벤트 처리.
5.2 애니메이션 Page 283 ~ 295.
윤 홍 란 다이알로그(대화상자) 윤 홍 란
○ 본 강의 자료는 이지스퍼블리싱(주)에서 제공하는 강의 교안입니다.
Lesson 11. 이벤트.
CHAP 11. 액티비티와 인텐트.
CHAP 7. 메뉴와 대화상자.
07. 메뉴와 대화상자 제목. 07. 메뉴와 대화상자 제목 메뉴를 작성하고 사용하는 방법을 배운다. 토스트의 다양한 출력 방법을 알아본다. 대화상자의 사용법을 익힌다.
마우스(Mouse) 다루기 컴퓨터응용 및 실습 I.
제 2 장 WML 시뮬레이터 및 무선인터넷 서버 설치
CHAP 8. 그래픽.
자바 5.0 프로그래밍.
CHAP 6. 이벤트 처리.
CHAP 14. 데이터베이스와 환경 설정.
CHAP 13. 네트워크.
속성과 리스너 초기화 파라미터 외 파라미터에 대해 이해한다. 리스너를 생성해보고 사용에 대해 이해한다.
CHAP 12. 리소스와 보안.
7장 인터페이스와 추상 클래스.
10장 tkinter로 GUI 만들기.
CHAP 3. 첫번째 애플리케이션.
CHAP 5. 레이아웃.
DK-128 FND 실습 아이티즌 기술연구소
Lesson 2. 기본 데이터형.
Lab 1 Guide: 교재 2장 DrawX ( 쪽)
뇌를 자극하는 Windows Server 장. 원격 접속 서버.
CHAP 13. 서비스와 방송 수신자.
인터넷응용프로그래밍 JavaScript(Intro).
Lab 8 Guide: 멀티스레딩 예제 2 * Critical Section을 이용한 멀티스레딩 동기화 (교재 15장, 쪽)
CHAP 5. 레이아웃.
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성. 학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성.
단축키 기능 1. 단축키 기능 설명 Alt + R 조회 S 저장 I 삽입 A 추가 D 삭제 P 출력 Q 닫기
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
영상처리 실습 (OpenCV + MFC) Chonbuk National University A.I. Lab.
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
05. 그래픽 빨간색 사각형 그리기 그래픽 그리기 발 표 자 : 07 정 경 오.
컴퓨터 구성요소와 사용 컴퓨터 문서 작업 인터넷 활용
.Net Web Application 2007 컴퓨터공학실험(Ⅰ)
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
메뉴(Menu) 컴퓨터응용 및 실습 I.
9 브라우저 객체 모델.
CHAP 11. 리소스와 보안.
김덕용 게임 엔진론 Project 2차발표.
CHAP 5. 메뉴와 대화상자.
BoardGame 보드게임 따라가기.
Ch 4. 선택 위젯의 사용과 커스텀뷰 만들기 Assignment #1 04 – 1, 2) 08학번 정보과학과 유재윤
20 XMLHttpRequest.
Presentation transcript:

Contents 학습목표 이벤트를 처리하는 여러 가지 형식과 각 형식의 장단점에 대해 상세하게 연구하고 기본적인 이벤트에 대한 실습을 한다. 사용자의 입력을 자유자재로 처리하기 위해서 반드시 습득해야 하는 중요한 기술 실습. 학습내용 이벤트 핸들러 여러 가지 이벤트

화면을 누르는 터치 동작은 콜백 메서드나 리스너의 핸들러로 받는다. 6.2.1 터치 입력 화면을 누르는 터치 동작은 콜백 메서드나 리스너의 핸들러로 받는다. boolean onTouchEvent (MotionEvent event) boolean onTouch (View v, MotionEvent event) 콜백 메서드는 이벤트 정보만 받고 리스너는 이벤트 대상인 v까지 받는다. MotionEvent.getAction : 이벤트 정보 동 작 설 명 ACTION_DOWN 화면을 눌렀다. ACTION_MOVE 누른채로 움직였다. ACTION_UP 화면에서 손가락을 뗐다. getX(), getY() : 터치한 좌표 전달

6.2.1. 외부 변수 액세스 C06_FreeLine.java public class C06_FreeLine extends Activity { private MyView vw; ArrayList<Vertex> arVertex; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); vw = new MyView(this); setContentView(vw); arVertex = new ArrayList<Vertex>(); } // 정점 하나에 대한 정보를 가지는 클래스 public class Vertex { Vertex(float ax, float ay, boolean ad) { x = ax; y = ay; Draw = ad; float x; float y; boolean Draw; C06_FreeLine.java protected class MyView extends View { Paint mPaint; public MyView(Context context) { super(context); // Paint 객체 미리 초기화 mPaint = new Paint(); mPaint.setColor(Color.BLACK); mPaint.setStrokeWidth(3); mPaint.setAntiAlias(true); } public void onDraw(Canvas canvas) { canvas.drawColor(Color.LTGRAY); // 정점을 순회하면서 선분으로 잇는다. for (int i=0;i<arVertex.size();i++) { if (arVertex.get(i).Draw) { canvas.drawLine(arVertex.get(i-1).x, arVertex.get(i-1).y, arVertex.get(i).x, arVertex.get(i).y, mPaint); } } }

6.2.1 터치 입력 C06_FreeLine.java // 터치 이동시마다 정점들을 추가한다. public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { arVertex.add(new Vertex(event.getX(), event.getY(), false)); return true; } if (event.getAction() == MotionEvent.ACTION_MOVE) { arVertex.add(new Vertex(event.getX(), event.getY(), true)); invalidate(); return false;

6.2.2. 키보드 입력 키보드로 문자 입력시의 동작 처리. 키보드 이벤트는 다음 콜백 매서드가 처리한다. 콜 백 : boolean onKeyDown (int keyCode, KeyEvent event) 리스너 : boolean onKey (View v, int keyCode, KeyEvent event) event로 키와 동작이 전달된다 keyCode 인수 : 눌러진 키 Key Event 클래스는 키보드 이벤트에 대한 여러 가지 정보를 구하는 메서드 제공.

6.2.2. 키보드 입력 KeyCode 상수값 상수 설명 KEYCODE_DPAD_LEFT 왼쪽 이동키 KEYCODE_DPAD_RIGHT 오른쪽 이동키 KEYCODE_DPAD_UP 위쪽 이동키 KEYCODE_DPAD_DOWN 아래쪽 이동키 KEYCODE_DPAD_CENTER 이동키 중앙의 버튼 KEYCODE_A 알파벳 A, 알파벳 B부터는 KEYCODE_B식이다 KEYCODE_0 숫자 0. 1부터는 KEYCODE_1식이다. KEYCODE_CALL 통화 KEYCODE_ENDCALL 통화 종료 KEYCODE_HOME 홈 KEYCODE_BACK 뒤로 KEYCODE_VOLUME_UP 볼륨 증가 버튼 KEYCODE_VOLUME_DOWN 볼륨 감소 버튼

MotionEvent.getAction : 이벤트 정보 6.2.2. 키보드 입력 MotionEvent.getAction : 이벤트 정보 동 작 설 명 ACTION_DOWN 키를 눌렀다. ACTION_UP 키를 뗐다. ACTION_MULTIPLE 같은 키를 여러 번 눌렀다.

6.2.2. 키보드 입력 C06_MoveCircle.java public class C06_MoveCircle extends Activity { private MyView vw; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); vw = new MyView(this); vw.setFocusable(true); vw.setFocusableInTouchMode(true); setContentView(vw); } protected class MyView extends View { float mX,mY; int mColor; public MyView(Context context) { super(context); mX = 100; mY = 100; mColor = Color.BLUE; C06_MoveCircle.java public void onDraw(Canvas canvas) { canvas.drawColor(Color.LTGRAY); Paint Pnt = new Paint(); Pnt.setColor(mColor); Pnt.setAntiAlias(true); canvas.drawCircle(mX,mY,16,Pnt); } public boolean onKeyDown(int KeyCode, KeyEvent event) { super.onKeyDown(KeyCode, event); if (event.getAction() == KeyEvent.ACTION_DOWN) { switch (KeyCode) { case KeyEvent.KEYCODE_DPAD_LEFT: mX-=5; invalidate(); return true; case KeyEvent.KEYCODE_DPAD_RIGHT: mX+=5;

6.2.2. 키보드 입력 C06_MoveCircle.java case KeyEvent.KEYCODE_DPAD_UP: mY-=5; invalidate(); return true; case KeyEvent.KEYCODE_DPAD_DOWN: mY+=5; case KeyEvent.KEYCODE_DPAD_CENTER: if (mColor == Color.BLUE) { mColor = Color.RED; } else { mColor = Color.BLUE; } return false;

6.2.3. 위젯의 이벤트 처리 위젯도 뷰와 동일하지만 이벤트를 한꺼번에 처리할 수 있다. 클릭은 눌렀다 떼는 동작을 의미한다. 버튼은 단순한 차일드 위젯으로 이미 상속을 받지 않고 이벤트를 처리할 수 있어야 한다. 그래서 클릭 이벤트에는 콜백 이벤트가 정의되어 있지 않고 리스너 이벤트로 받아야 한다. void onClick (View v)

6.2.3. 위젯의 이벤트 처리 C06_fruit.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_horizontal" > <TextView android:id="@+id/fruit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#ff0000" android:textSize="40sp" android:text="과일" /> C06_fruit.xml <LinearLayout android:layout_width="wrap_content" android:layout_height="fill_parent" > <Button android:id="@+id/apple" android:layout_height="wrap_content" android:text="Apple" /> android:id="@+id/orange" android:text="Orange" </LinearLayout>

6.2.3. 위젯의 이벤트 처리 – 리스너가 각각 존재 C06_fruit.java public class C06_Fruit extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.c06_fruit); Button btnApple= (Button)findViewById(R.id.apple); btnApple.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { TextView textFruit=(TextView)findViewById(R.id.fruit); textFruit.setText("Apple"); } }); C06_fruit.java Button btnOrange =(Button)findViewById(R.id.orange); btnOrange.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { TextView textFruit=(TextView)findViewById(R.id.fruit); textFruit.setText("Orange"); } });

6.2.3. 위젯의 이벤트 처리 – 인터페이스 구현 C06_fruit.java public class C06_Fruit extends Activity implements View.OnClickListener { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.c06_fruit); Button btnApple =(Button)findViewById(R.id.apple); btnApple.setOnClickListener(this); Button btnOrange =(Button)findViewById(R.id.orange); btnOrange.setOnClickListener(this); } C06_fruit.java public void onClick(View v) { TextView textFruit=(TextView)findViewById(R.id.fruit); switch (v.getId()) { case R.id.apple: textFruit.setText("Apple"); break; case R.id.orange: textFruit.setText("Orange"); }

6.2.3. 위젯의 이벤트 처리 – 인터페이스 구현 멤버 객체 C06_fruit.java public class C06_Fruit extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.c06_fruit); findViewById(R.id.apple).setOnClickListener(mClickListener); findViewById(R.id.orange).setOnClickListener(mClickListener); } C06_fruit.java Button.OnClickListener mClickListener = new View.OnClickListener() { public void onClick(View v) { TextView textFruit=(TextView)findViewById(R.id.fruit); switch (v.getId()) { case R.id.apple: textFruit.setText("Apple"); break; case R.id.orange: textFruit.setText("Orange"); } };

6.2.3. 위젯의 이벤트 처리- XML 속성과 이밴트 핸들러 연결 C06_fruit2.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_horizontal" > <TextView android:id="@+id/fruit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#ff0000" android:textSize="40sp" android:text="과일" /> C06_fruit2.xml <LinearLayout android:layout_width="wrap_content" android:layout_height="fill_parent" > <Button android:id="@+id/apple" android:layout_height="wrap_content" android:onClick="mOnClick" android:text="Apple" /> android:id="@+id/orange" android:text="Orange" </LinearLayout>

6.2.3. 위젯의 이벤트 처리- XML 속성과 이밴트 핸들러 연결 C06_fruit.java public class C06_Fruit2 extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.c06_fruit2); } C06_fruit.java public void mOnClick(View v) { TextView textFruit=(TextView)findViewById(R.id.fruit); switch (v.getId()) { case R.id.apple: textFruit.setText("Apple"); break; case R.id.orange: textFruit.setText("Orange"); }

6.2.4. 롱클릭 롱크릭 : 일정한 시간동안 계속 누르고 있는 동작(마우스 오른쪽 버튼에 해당)으로 컨텍스트 메뉴 여는 용도로 활용 void setOnLongClickListener (View.OnLongClickListener) boolean onLongClick(View v)

6.2.4. 롱클릭 C06_fruit2.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_horizontal" > <TextView android:id="@+id/count" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#ff0000" android:textSize="40sp" android:text="0" /> <LinearLayout C06_fruit2.xml <Button android:id="@+id/decrease" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="mOnClick" android:text="감소" /> android:id="@+id/increase" android:text="증가" </LinearLayout>

6.2.4. 롱클릭 C06_fruit.java public class C06_LongClick extends Activity { int mCount = 0; TextView mTextCount; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.c06_longclick); mTextCount=(TextView)findViewById(R.id.count); findViewById(R.id.decrease).setOnLongClickListener(mLongClickListener); findViewById(R.id.increase).setOnLongClickListener(mLongClickListener); } public void mOnClick(View v) { switch (v.getId()) { case R.id.decrease: mCount--; mTextCount.setText("" + mCount); break; case R.id.increase: mCount++; C06_fruit.java View.OnLongClickListener mLongClickListener = new View.OnLongClickListener() { public boolean onLongClick(View v) { switch (v.getId()) { case R.id.decrease: mCount = 0; mTextCount.setText("" + mCount); return true; case R.id.increase: mCount = 100; break; } return false; };

6.2.5. 포커스 관리 키보드 이벤트는 포커스를 가진 뷰에게만 전달. 포커스는 다음 키 입력을 받을 뷰가 누구인지를 가리키는 것을 말함. 대부분의 운영체제는 포커스를 가진 뷰를 색다르게 표시. 일반모드 : 모바일 환경의 심플한 디자인과 어울리지 않음. 터치모드 : 터치 스크린 사용시는 임의의 위젯을 클릭할 수 있으므로 포커스 표시를 하지 않는다. 터치 모드 전환은 시스템에 관리하며 응용 프로그램이 통제할 수 없다 모 드 XML 속성 포커스 설정 포커스 조사 일반 모드 focusable setFocusable isFocusable 터치 모드 focusablelnTouchMode setFocusablelnTouchMode isFocusablelnTouchMode

6.2.5. 롱클릭 C06_focustest.xml <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TableRow> <Button android:id="@+id/btn11" android:text="Button 11" /> <Button android:id="@+id/btn12" android:text="Button 12" /> </TableRow> <Button android:id="@+id/btn21" android:text="Button 21" /> <Button android:id="@+id/btn22" android:text="Button 22" /> </TableLayout>

6.2.5. 롱클릭 C06_focustest2.xml C06_focustest2.xml 속 성 메서드 설 명 속 성 메서드 설 명 nextFocusLeft setNextFocusLeftld 왼쪽 이동시의 포커스 이동 위젯 nextFocusRight setNextFocusRightld 오른쪽 이동시의 포커스 이동 위젯 nextFocusUp setNextFocusUpld 위쪽 이동시의 포커스 이동 위젯 nextFocusDown setNextFocusDownld 아래쪽 이동시의 포커스 이동 위젯 C06_focustest2.xml <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TableRow> <Button android:id="@+id/btn11" android:text="Button 11" android:nextFocusLeft="@+id/btn22" android:nextFocusUp="@+id/btn21" /> <Button android:id="@+id/btn12" android:text="Button 12" android:nextFocusRight="@id/btn21" android:nextFocusUp="@id/btn22" /> C06_focustest2.xml </TableRow> <TableRow> <Button android:id="@id/btn21" android:text="Button 21" android:nextFocusLeft="@id/btn12" android:nextFocusDown="@id/btn11" /> <Button android:id="@id/btn22" android:text="Button 22" android:nextFocusRight="@id/btn11" android:nextFocusDown="@id/btn12" /> </TableLayout>

6.2.6. 타이머 이벤트 이벤트는 주로 사용자, 시스템 상황 변화에 따라 발생. 타이머 이벤트는 시계나 타이머 또는 애니메이션이나 백그라운드 감시 작업에도 적합. 일정한 주기로 반복적인 작업을 할 때는 스레드를 쓰는 것이 원칙적이나 간단히 타이머를 이용할 수도 있다. 주기적인 작업을 처리하는 방법.

6.2.6. 타이머 이벤트 –핸들러 멤버 C06_Timer.xml C06_Timer.java <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#cccccc" android:gravity="center_horizontal" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="40sp" android:textColor="#000000" /> </LinearLayout> C06_Timer.java public class C06_Timer extends Activity { int value=0; TextView mText; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.c06_timer); mText=(TextView)findViewById(R.id.text); mHandler.sendEmptyMessage(0); } Handler mHandler = new Handler() { public void handleMessage(Message msg) { value++; mText.setText("Value = " + value); mHandler.sendEmptyMessageDelayed(0,1000); };

6.2.6. 타이머 이벤트 –onCreate에서 생성한 핸들러 C06_Timer.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#cccccc" android:gravity="center_horizontal" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="40sp" android:textColor="#000000" /> </LinearLayout> C06_Timer.java public class C06_Timer extends Activity { int value=0; TextView mText; Handler mHandler; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.c06_timer); mText=(TextView)findViewById(R.id.text); mHandler = new Handler() { public void handleMessage(Message msg) { value++; mText.setText("Value = " + value); if (value < 5) { mHandler.sendEmptyMessageDelayed(0,1000); } } }; mHandler.sendEmptyMessage(0); }}

6.2.6. 타이머 이벤트 –타이머 객체 C06_Timer.xml C06_Timer.java <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#cccccc" android:gravity="center_horizontal" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="40sp" android:textColor="#000000" /> </LinearLayout> C06_Timer.java public class C06_Timer extends Activity { int value=0; TextView mText; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.c06_timer); mText=(TextView)findViewById(R.id.text); new CountDownTimer(10 * 1000, 1000) { public void onTick(long millisUntilFinished) { value++; mText.setText("Value = " + value); if (value == 5) { cancel(); } public void onFinish() { }.start(); } }