Programing/Android
-
Hello World 가 Goodbye로Programing/Android 2010. 10. 5. 09:11
터치 이벤트를 공부 했으므로 화면을 터치하면 문자를 변경시키는 이벤트를 발생 시켜 볼 수 있다. 외부 변수(XML)의 문자열을 바꾸는 방법이다. 안드로이드 프로젝트로 마법사로 만들면 아래와 같은 결과가 나오는 할 수 있다. Goodbye는 프로젝트를 만들때 프로젝트 명이며 마법사를 이용하면 자동적으로 위와 같이 만들어준다. main.xml에서 단지 몇가지만 고쳐주면 된다. 마법사가 만들어 준것에서 리니어와 텍스트에 각각의 id만들 부여했고, 색상을 바꾼것이 전부이다. 이제 화면을 터치화면 전체 색상과 문자가 바뀌는 이벤트를 만들어 보자. 화면을 터치하면 아래와 같이 배경색과 문자가 바뀌는 것이 목표이다. 소스를 보자. 익명 이너 클래스를 사용해서 setOnTouchListener에 바로 이벤트를 구현하는..
-
이벤트 처리 4 - 익명 이너 클래스Programing/Android 2010. 10. 5. 08:09
리스너 인터페이스 하나를 위해 새로운 클래스를 일일히 선언하기가 번거롭다. 자바 이벤트 처리 방식의 특성상 이벤트 하나당 객체 하나씩을 만들어야 하는데 너무 번거로운 일이다. 사실 이벤트 처리를 위해 꼭 필요한 알맹이는 핸들러 메서드 뿐이다. 자바는 이런 경우를 위해 언어 차원에서 익명 이너 클래스라는 문법을 제공한다. 그 클래스의 객체가 단 하나만 필요한 경우 또는 상위 클래스나 인터페이스의 메서드 하나를 재정의하기 위해 클래스를 선언하는 경우에는 굳이 클래스를 선언할 필요없이 상속과 재정의를 동시에 할 수 있다. 위의 TouchListener 은 인터페이스를 상속받아 onTouch 메서드를 구현하는 이름엇는 서브 클래스 타입의 객체로 1회성 변수와 같은 존재이다. 더더욱 일회성으로 사용 할 것이라면 ..
-
이벤트 처리 3 - 액티비티 또는 뷰가 리스너 구현Programing/Android 2010. 10. 5. 07:53
인터페이스는 누가 구현할 것인가에 대해서는 제약이 없다. 꼭 새로운 클래스가 만들어져 인터페이스를 구현할 필요없이 기존에 클래스가 있다면 그 클래스에서 구현하면 되는것이다. 이벤트 처리 2 - 리스너 인터페이스 구현에서 한것 처럼 새로운 클래스를 만들어서 이를 구현할 필요없이 액티비티에서 바로 구현할 수 있는 것이다. public class HandleEvent extends Activity implements View.OnTouchListener 위와 같이 선언하면 액티비티가 인터페이스를 구현 할 수 있다. 구현이 끝난후 vm.setOnTouchListener(TouchListener)을 vm.setOnTouchListener(this) 로 바꾸어 자신이 이벤트를 구현했다고 등록만 해주면 같은 결과가 ..
-
이벤트 처리 2 - 리스너 인터페이스Programing/Android 2010. 10. 5. 07:26
리스너는 특정 이벤트를 처리하는 인터페이스이다. 모든 리스너는 View클래스의 이너 인터페이스로 선언되어 있다. View.OnTouchListener : boolean onTouch ( View v, MotionEvent event) View 클래스 내부 인터페이스로 OnTouchListener 인터페이스가 선언되어 있고 이 인터페이스는 onTouch 라는 추상 메서드를 포함한다. 이러한 메서드를 이벤트 핸들러라고 부른다. 다른 리스너들도 이름만 조금씩 다를 뿐이지 거의 비슷한 구조이다. 모든 인터페이스에는 이벤트를 처리하는 추상 메서드가 딱 하나씩만 선언되어 있다. 리스너를 구현하는 클래스를 선언하고 추상 메서드인 핸들러를 구체적으로 구현하면 리스너 객체가 만들어진다. 하지만 이렇게 만들기만 한다고 이..
-
이벤트 처리 1 - 콜백 메서드 재정의Programing/Android 2010. 10. 5. 06:53
자바문법은 여러 가지 변형된 구조를 허락하고, 각 이벤트마다의 특성이 조금씩 다르기 때문에 이벤트를 처리하는 다양한 방법들이 존재한다. 각 방법별로 효율성이나 가독성에 차이가 있으므로 그때그때 적절한 방법을 선택해서 사용해야한다. 첫번째 방법은 콜백 메서드 재정의 방법이다. 콜백은 특정 이벤트가 발생했을 때 시스템에 의해 자동으로 호출되는 메서드이며 이 메서드에 코드를 작성해 놓으면 이벤트 발생시의 동작을 정의할 수 있다. boolen onTouchEvent (MotionEvent event) 많은 콜백함수중 위에 코드는 화면을 터치할 때 발생하는 이벤트이다. 위의 사진은 에뮬레이터의 아무곳이나 클릭하면 Toast로 "터치이벤트 발생"이라는 텍스처를 보여주는 화면이다. 소스 코드는 아래와 같다. Myvi..
-
ImageView의 속성Programing/Android 2010. 10. 3. 16:46
ImageView는 아이콘이나 비트맵을 출력하는 위젯이다. 텍스트만으로는 이쁘고 직관적인 화면을 만들기 어렵기에 ImageView역시 많이 사용되어 진다. textView와 더불이 가장 많이 사용되어 지는 ImageView의 속성에 대해 알아보자. 1.src - 출력할 이미지를 지정하는 속성이다. - 색상값을 출력할 수도 있고 외부의 이미지를 지정할 수 있다. - @drawable/ID 형식으로 이미지의 ID를 지정하면 해당 이미지가 이미지뷰의 표면에 출력된다. 2. adjustViewBounds - 이미지의 종횡비를 맞추기 위해 이미지 뷰의 크기를 적당히 조정할 것인가를 지정한다. - bool값을 사용한다. 3. cropToPadding - 위젯의 주어진 여백에 맞추기 위해 이미지의 일부를 잘라내는 속..
-
TextView의 속성Programing/Android 2010. 10. 3. 16:14
TextView는 이름 그대로 화면에 텍스트를 출력하는 위젯이다. 단순히 문자열을 보여 주기만 할 뿐이며 사용자의 입력은 받아들이지 않는다. TextView의 속성으론 꽤 많은 것들이 있으나 직관적인 이름이고 상식적인 내용들이라 이해하기가 다소 쉽다. 자주 사용되어 지는 속성 몇가지만 알아보자. 1. text - 출력할 문자열을 지정한다. - text="hello world" 처럼 바로 대입하는 방식이 있지만 다국어 버전, 일관된 메시지 관리를 위해서는 string.xml에 문자열을 정의해 놓고 id를 지정하기도 한다. 2. textcolor - 문자열의 색상을 지정한다. - 디폴트색은 불투명한 밝은 회색이다. 3. textsize - 텍스트의 폰트 크기를 지정한다. - 숫자를 사용하고 단위로는 sp, ..
-
View의 속성Programing/Android 2010. 10. 3. 16:10
모든뷰(예를들면 버튼, 체크박스, 라디오버튼등등)은 View클래스로부터 파생되었기에 View가 가진 모든 속성과 메서드를 그대로 상속받는다. 여러가지 속성들이 있지만 대표적인 속성들을 정리해보자 1.id - 뷰의 이름을 정의한다. - @[+]id/ID 의 형식 - @정의하거나 참조한다는 의미, +는 새롭게 정의한다는 의미, id는 예약어이며, ID는 원하는 이름값 - XML 문서에 ID를 지정해 놓으면 이 이름이 R.java에 정수형 상수로 정의된다. - 모든위젯에 id를 꼭 지정해야될 필요성은없다. 참조될 위젯에만 id를 지정하면 된다. 2. latout_width, layout_height - 뷰의 가로 세로 길이를 지정한다. - 부모뷰의 크기만큼(fill_parent), 내용물의 크기만큼(wrap_..