// 화면을터치하였을때해야할작업구현 case MotionEvent.ACTION_MOVE: // 화면을드래그하였때 // 화면을드래그하였을때해야할작업구현 case MotionEvent.ACTION_UP: // 화면에서터치가사라질때 // 화면에서터치가사라질때해야할자업구현 c

Similar documents
[ 그림 7-1] 프로젝트 res 폴더 이미지뷰 [ 예제 7-1] 이미지뷰 1 <LinearLayout 2 ~~~~ 중간생략 ~~~~ 3 android:orientation="vertical" > 4 <ImageView

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme

9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요

2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android=" 2 xmlns:tools="

리니어레이아웃 - 2 -

안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 -

( )부록

슬라이드 1

03장

어댑터뷰

2 Application Name: Day10_yhg <LinearLayout android:layout_weight="3" > /> an

13ÀåÃß°¡ºÐ

학습목표 선언하여디자인을하는방법을이해하고, 실행할수있다. 시작화면을만드는방법과대체리소스를사용하는방법을이해하고실행할수있다. About 과같은상자를구현하고, 테마를적용하는법을이해하고실행할수있다.

슬라이드 1

01장

안드로이드2_14

이것은리스트뷰의 setadapter 메소드에잘표현되어있습니다. setadapter 는리스트뷰에사용할데이터객체를넘겨주는메소드입니다. 일반적으로생각한다면 ArrayAdapter 객체를생성하여사용할데이터를저장할것이고데이터가저장된 ArrayAdapter 객체를 setadapt

Daum 카페

학습목표 메뉴를추가하는방법을이해하고실습할수있다. 프로그램의기본설정 (settings) 을정의하는방법을알고실습할수있다. 대화상자를여는방법을알고실습할수있다. 로그메시지로디버깅하는방법을이해한다. 디버거로디버깅하는방법을이해한다.

2_안드로이드UI

gnu-lee-oop-kor-lec10-1-chap10

쉽게 풀어쓴 C 프로그래밍

50_1953.pdf

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx

슬라이드 1

위젯과레이아웃위젯은 View 클래스를상속해화면디스플레이와이벤트처리를할수있도록구현된스크린구성의최소단위를말한다. android.widget 패키지에는여러유형의위젯들이포함되어있다. TextView, ImageView, Button, ImageButton 등은가장간단한위젯들이

PowerPoint Presentation

슬라이드 1

PowerPoint Presentation

¾Èµå·ÎÀÌµå ³¹Àå-Åë.PDF

PowerPoint 프레젠테이션

헬로, 안드로이드 7 주차 멀티미디어 강대기동서대학교컴퓨터정보공학부

gnu-lee-oop-kor-lec06-3-chap7

1. 화면전환 [ 그림 1] 화면전홖에대한상태도 [ 그림 1] 은게임전반적이화면전홖에대한상태도입니다. 이에대한설명은아래와같습니다. Intro: 게임이시작될때보여주는화면. 화면이보여지고난뒤 2초후면 Main으로이동합니다. 실제게임에서는필요한데이터등을로딩하는동안보여주는형식

슬라이드 1

TipssoftAppActivity.java // 기본소스파일 main.xml // 배치와구성에관련된리소스파일 string.xml // 프로그램에서사용할문자열에관련된리소스파일 컴파일을하고나면 r.java 라는소스파일이하나추가되는데이파일은리소스파일을소스파일에서이용할수있도

슬라이드 1

오버라이딩 (Overriding)

전자공학설계실험 A 보고서 화 6A ~ 9B 박종태교수님 제출기한 ( 화 ) Android I.S 작업환경 Eclipse_Juno ver. 전자공학부 이상엽전자공학부 오윤재전자공학부

자바 프로그래밍

<4D F736F F F696E74202D20C1A63233C0E520B1D7B7A1C7C820C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - ÀÚ¹Ù08Àå-1.ppt

5장.key

<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint Template

(Microsoft PowerPoint - Ch06.ppt [\310\243\310\257 \270\360\265\345])

PowerPoint 프레젠테이션

JAVA PROGRAMMING 실습 08.다형성

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

윈도우시스템프로그래밍

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

Design Issues

제8장 자바 GUI 프로그래밍 II

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

뷰그룹 ( 레이아웃 ) 레이아웃이름 ( 클래스이름 ) FrameLayout LinearLayout 설명단일객체를표현하기위한프레임. 왼쪽상단에하나의뷰를배치하기때문에나중 에그린객체만보여준다. 수평또는수직으로자손의뷰를배치. 뷰가들어갈만한공간이없을때는자동으로 스크롤바가나타난다

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint 프레젠테이션

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

소프트웨어공학 Tutorial #2: StarUML Eun Man Choi

Microsoft PowerPoint - 14주차 강의자료

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

자바GUI실전프로그래밍2_장대원.PDF

OOO Paint

Microsoft PowerPoint - 02처음으로만드는(Ver 1.0)

12 주차 인텐트

헬로, 안드로이드 13 주차 SQL 활용하기 (2) 강대기동서대학교컴퓨터정보공학부

PowerPoint Presentation

K&R2 Reference Manual 번역본

<4D F736F F F696E74202D20C1A63138C0E520C0CCBAA5C6AE20C3B3B8AE28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

XML Parser

게임 기획서 표준양식 연구보고서

PowerPoint 프레젠테이션

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

Microsoft PowerPoint - 4주차_Android_UI구현.ppt [호환 모드]

Microsoft PowerPoint - 2강

OpenCV와 함께하는 컴퓨터 비전 프로그래밍 캠프

Microsoft PowerPoint - 04기본위젯(Ver 1.0)

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

PowerPoint Presentation

REMON Android SDK GUIDE (SDK Version 1.4.1) 1 / 25

헬로, 안드로이드 11 주차 위치파악하기와감지하기 강대기동서대학교컴퓨터정보공학부

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

슬라이드 1

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++,

09-interface.key

<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint UI-Layout.Menu.pptx

01 [ 일기장 ] 애플리케이션프로젝트작성 - [MyDiary] 앱 Mobile Apps >> [MyDiary] 앱프로젝트구조설계 일기장애플리케이션인 [MyDiary] 앱은메인화면과일기장의내용을작성하는화면으로이루어져있다. 화면이 2개라는것은액티비티가 2개이고액티비티에대

콘텐츠 PowerPoint 디자인

<BFF8B5E5B7CEC0CCB5E5322E687770>

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

학습목표 2D 그래픽에대해배운다. Color, Paint, Canvas, Path, Drawable 클래스를배운다. 스도쿠의게임시작하기를구현하고, Game 클래스, PuzzleView 클래스를정의한다. 정의된클래스내에서보드를그리고, 숫자를그린다. 숫자입력, 힌트추가,

PowerPoint Presentation

Microsoft PowerPoint - DoItAndroid_PART02_01_기본위젯과레이아웃_Rev.1.0 [호환 모드]

Transcription:

6 차시이벤트처리 1 학습목표 터치이벤트처리를배운다. XML 의 onclick 속성을사용하여이벤트를처리한다. 2 확인해볼까? 3 이벤트처리하기 1) 학습하기 터치이벤트 public boolean ontouchevent(motionevent event) { swtich(event.getaction()) { case MotionEvent.ACTION_DOWN: // 화면을터치하였을때

// 화면을터치하였을때해야할작업구현 case MotionEvent.ACTION_MOVE: // 화면을드래그하였때 // 화면을드래그하였을때해야할작업구현 case MotionEvent.ACTION_UP: // 화면에서터치가사라질때 // 화면에서터치가사라질때해야할자업구현 case MotionEvent.ACTION_CANCEL: // 터치가취소될때 // 터치가취소될때해야할작업구현 default: return true; [ 예제 6-1] 터치이벤트.java 1 package com.example. 프로젝트명 ; 2 3 import android.app.activity; 4 import android.content.context; 5 import android.graphics.canvas; - 2 -

6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 import android.graphics.color; import android.graphics.paint; import android.os.bundle; import android.view.motionevent; import android.view.view; public class 프로젝트명 Activity extends Activity { @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); MyView myview = new MyView(this); setcontentview(myview); public class MyView extends View { public MyView(Context context) { super(context); float centerx = 0; float centery = 0; float radius = 0; @Override public boolean ontouchevent(motionevent event) { switch (event.getaction()) { case MotionEvent.ACTION_DOWN: centerx = event.getx(); centery = event.gety(); case MotionEvent.ACTION_MOVE: radius = (float) Math.sqrt((event.getX() - centerx) * (event.getx() - centerx) + (event.gety() - centery) * (event.gety() - centery)); this.invalidate(); case MotionEvent.ACTION_UP: - 3 -

46 radius = (float) Math.sqrt((event.getX() - centerx) 47 * (event.getx() - centerx) + (event.gety() - centery) 48 * (event.gety() - centery)); 49 this.invalidate(); 50 51 52 return true; 53 54 55 @Override 56 protected void ondraw(canvas canvas) { 57 super.ondraw(canvas); 58 Paint paint = new Paint(); 59 paint.setantialias(true); 60 paint.setcolor(color.blue); 61 62 canvas.drawcircle(centerx, centery, radius, paint); 63 64 65 18, 19행 main.xml 파일대신재정의한커스텀뷰인 MyView클래스를화면에보여준다. 22행커스텀뷰정의를시작하는부분이다. View를상속받아 MyView 클래스를재정의한다. View에에러가나면 "Ctrl + Shift + O" 를눌러 View 클래스를임포트한다. 24~26행생성자를재정의하는부분이다. 22행의빨간줄이그인 MyView에마우스커서를가져간후 [Add Constructor 'MyView(Context)'] 를선택한다. 28~30행원의중심점과반지름에대한변수를선언하고초기화한다. 33~53행 ontouchevent() 메소드를재정의한다. MyView 안의빈공간에마우스커서를데고, 마우스오른쪽버튼을눌러 [Source]-[Override/Implement Methods...] 팝업메뉴를선택한다. [Override/Implement Methods] 대화상자가나오면 [ontouchevent(motionevent event)] 를체크하고 <OK> 버튼을클릭하여추가한후코딩한다. 35~38행터치된화면의점의좌표를 (centerx, centery) 에저장한다. 40~43행, 46~49행화면이드래그될때와화면에서손을떼었을때반지름을계산한다. invalidate() 메소드를수행하면 ondraw() 메소드가수행되어화면을다시그려준다. 56~62행 ondraw() 메소드를재정의한다. MyView 안의빈공간에마우스커서를데고, 마우스오른쪽버튼을눌러 [Source]-[Override/Implement Methods...] 팝업메뉴를선택한다. [Override/Implement Methods] 대화상자가나오면 [ondraw(canvas)] 를체크하고 <OK> 버튼을클릭하여추가한후코딩한다. 원을그려주는모듈이들어가있다. - 4 -

[ 그림 6-1] 실행화면 위젯클릭이벤트 [ 예제 6-2]main.xml 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" - 5 -

3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=". 프로젝트명Activity" > <LinearLayout android:layout_width="match_parent" android:gravity="center_horizontal" android:orientation="horizontal" > android:id="@+id/btnred" android:layout_width="wrap_content" android:text="red" /> android:id="@+id/btngreen" android:layout_width="wrap_content" android:text="green" /> android:id="@+id/btnblue" android:layout_width="wrap_content" android:text="blue" /> </LinearLayout> <TextView android:id="@+id/tvtext" android:layout_width="wrap_content" android:layout_gravity="center" android:text="color" android:textsize="20dp" /> </LinearLayout> [ 예제 6-3] 프로젝트명 Activity.java - 6 -

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 package com.example. 프로젝트명 ; import android.app.activity; import android.graphics.color; import android.os.bundle; import android.view.view; import android.widget.button; import android.widget.textview; public class 프로젝트명Activity extends Activity { Button btnred, btngreen, btnblue; TextView tvtext; @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); btnred = (Button) findviewbyid(r.id.btnred); btngreen = (Button) findviewbyid(r.id.btngreen); btnblue = (Button) findviewbyid(r.id.btnblue); tvtext = (TextView) findviewbyid(r.id.tvtext); btnred.setonclicklistener(new View.OnClickListener() { @Override public void onclick(view arg0) { tvtext.settextcolor(color.red); tvtext.settext("red"); ); btngreen.setonclicklistener(new View.OnClickListener() { @Override public void onclick(view arg0) { tvtext.settextcolor(color.green); tvtext.settext("green"); ); - 7 -

41 42 43 44 45 46 47 48 49 50 btnblue.setonclicklistener(new View.OnClickListener() { @Override public void onclick(view arg0) { tvtext.settextcolor(color.blue); tvtext.settext("blue"); ); [ 그림 6-2] 실행화면 - 8 -

[ 예제 6-4]main.xml 1 ~~~~ 중간생략 ~~~~~ 2 3 android:id="@+id/btnred" 4 android:layout_width="wrap_content" 5 6 android:onclick="onclick" 7 android:text="red" /> 8 ~~~~ 중간생략 ~~~~~ 6행버튼위젯에 onclick 속성을설정하였다. 동일한방법으로 2개의버튼에도설정한다. 프로그램을실행하여버튼을클릭하면 onclick() 메소드가호출된다. [ 예제 6-5] 프로젝트명Activity.java 1 package com.example. 프로젝트명 ; 2 3 import android.app.activity; 4 import android.graphics.color; 5 import android.os.bundle; 6 import android.view.view; 7 import android.widget.textview; 8 9 public class 프로젝트명Activity extends Activity { 10 11 TextView tvtext; 12 13 @Override 14 protected void oncreate(bundle savedinstancestate) { 15 super.oncreate(savedinstancestate); 16 setcontentview(r.layout.main); 17 18 19 public void onclick(view v) { 20 switch (v.getid()) { 21 case R.id.btnRed: 22 tvtext.settextcolor(color.red); - 9 -

23 tvtext.settext("red"); 24 25 case R.id.btnGreen: 26 tvtext.settextcolor(color.green); 27 tvtext.settext("green"); 28 29 case R.id.btnBlue: 30 tvtext.settextcolor(color.blue); 31 tvtext.settext("blue"); 32 33 34 35 17~32행 XML에서설정한 onclick 속성에대한메소드를구현하였다. 18행 v.getid() 메소드를통해버튼의 ID를가져와어떤버튼이클릭되었는지알수있다. 2) 활동하기 활동개요 활동과정 - 10 -

[ 예제 6-6]MyView.java 1 package com.example.event; 2 3 import android.content.context; 4 import android.graphics.canvas; 5 import android.graphics.color; 6 import android.graphics.paint; 7 import android.util.attributeset; 8 import android.view.motionevent; 9 import android.view.view; 10 11 public class MyView extends View { 12 13 14 15 public MyView(Context context, AttributeSet attrs) { super(context, attrs); 16 17 18 19 final static int LINE = 1, CIRCLE = 2, RECT = 3; static int shape = LINE; static int color = Color.RED; 20 float startx = 0; // 시작점 X좌표 21 float starty = 0; // 시작점 Y좌표 22 float endx = 0; // 끝점 X좌표 23 float endy = 0; // 끝점 Y좌표 24 float radius = 0; // 반지름 25 26 @Override 27 28 29 30 31 public boolean ontouchevent(motionevent event) { switch (event.getaction()) { case MotionEvent.ACTION_DOWN: startx = event.getx(); starty = event.gety(); - 11 -

32 33 case MotionEvent.ACTION_MOVE: 34 case MotionEvent.ACTION_UP: 35 endx = event.getx(); 36 endy = event.gety(); 37 this.invalidate(); 38 39 40 return true; 41 42 43 @Override 44 protected void ondraw(canvas canvas) { 45 super.ondraw(canvas); 46 47 Paint paint = new Paint(); 48 paint.setcolor(color); 49 50 switch(shape){ 51 case LINE: 52 canvas.drawline(startx, starty, endx, endy, paint); 53 54 case CIRCLE: 55 radius = (float) Math.sqrt((startX - endx) 56 * (startx - endx) + (starty - endy) 57 * (starty - endy)); 58 canvas.drawcircle(startx, starty, radius, paint); 59 60 case RECT: 61 canvas.drawrect(startx, starty, endx, endy, paint); 62 63 64 65 17행도형모형에대한상수값선언 18행도형의값을저장하는정적변수를선언하고초기화한다. 19행페인트색상의값을저장하는정적변수를선언하고초기화한다. - 12 -

[ 예제 6-7]main.xml 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="vertical" 6 tools:context=".eventactivity" > 7 <LinearLayout 8 android:layout_width="match_parent" 9 10 android:orientation="horizontal" > 11 12 android:id="@+id/btnline" 13 android:layout_width="0dp" 14 15 android:layout_weight="1" 16 android:onclick="onclick" 17 android:text=" 선그리기 " /> 18 19 android:id="@+id/btncircle" 20 android:layout_width="0dp" 21 22 android:layout_weight="1" 23 android:onclick="onclick" 24 android:text=" 원그리기 " /> 25 26 android:id="@+id/btnrect" 27 android:layout_width="0dp" 28 29 android:layout_weight="1" - 13 -

30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 android:onclick="onclick" android:text=" 사각형 " /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:orientation="horizontal" > android:id="@+id/btnred" android:layout_width="0dp" android:layout_weight="1" android:onclick="onclick" android:text=" 빨강 " /> android:id="@+id/btngreen" android:layout_width="0dp" android:layout_weight="1" android:onclick="onclick" android:text=" 초록 " /> android:id="@+id/btnblue" android:layout_width="0dp" android:layout_weight="1" android:onclick="onclick" android:text=" 파랑 " /> </LinearLayout> <com.example.event.myview android:id="@+id/myview" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> </LinearLayout> - 14 -

[ 예제 6-8]EventActivity.java 1 packge com.example.event; 2 3 import android.app.activity; 4 import android.graphics.color; 5 import android.os.bundle; 6 import android.view.view; 7 import android.widget.textview; 8 9 public class EventActivity extends Activity { 10 11 TextView tvtext; 12 13 @Override 14 protected void oncreate(bundle savedinstancestate) { 15 super.oncreate(savedinstancestate); 16 setcontentview(r.layout.main); 17 18 19 public void onclick(view v) { 20 switch (v.getid()) { 21 case R.id.btnRed: 22 MyView.color = Color.RED; 23 24 case R.id.btnGreen: 25 MyView.color = Color.GREEN; 26 27 case R.id.btnBlue: 28 MyView.color = Color.BLUE; 29 30 case R.id.btnLine: 31 MyView.shape = MyView.LINE; 32 33 case R.id.btnCircle: 34 MyView.shape = MyView.CIRCLE; 35 36 case R.id.btnRect: 37 MyView.shape = MyView.RECT; 38 39-15 -

40 41 [ 그림 6-3] 실행화면 4 배운내용정리 public boolean ontouchevent(motionevent event) { swtich(event.getaction()) { case MotionEvent.ACTION_DOWN: // 화면을터치하였을때 // 화면을터치하였을때해야할작업구현 case MotionEvent.ACTION_MOVE: // 화면을드래그하였때 // 화면을드래그하였을때해야할작업구현 - 16 -

case MotionEvent.ACTION_UP: // 화면에서터치가사라질때 // 화면에서터치가사라질때해야할자업구현 case MotionEvent.ACTION_CANCEL: // 터치가취소될때 // 터치가취소될때해야할작업구현 default: return true; 5 학습확인하기 MotionEvent 1 ACTION_DOWN 2 ACTION_MOVE 3 ACTION_UP 4 ACTION_CANCEL 사용자이벤트 a b c d 6 지식창고 참고문헌 - 17 -

참고사이트 - 18 -