2011. 9. 27. 21:40ㆍ카테고리 없음
1. Canvas tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
- 캔버스는 뷰의 그리기 표면이며 이 위에 그림을 그린다. 그리기를 할 때마다 시스템이 초기화하여 뷰의 onDraw 메소드로 전달하므로 따로 생성할 필요 없이 전달받은 인수를 사용하면 된다.
- 모든 그리기 메소드의 마지막 인수는 색상이나, 글꼴등을 지정하는 Paint객체이다.
- 2D를 위한 표면이다, 3D의 경우 Surface 뷰를 사용한다.tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
2. Painttompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
- 페인트 객체는 그리기에 대한 속성 정보를 가지며 모든 그리기 메소드에 인수로 전달된다. new 연산자로 빈 Paint 객체를 생성하면 가장 무난한 디폴트 속성으로 생성된다. tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
- 페인트의 대표적인 속성은 안티 알리아싱이며 다음 메소드로 지정한다.
setAntiAlias(boolean aa) tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
안티 알리아싱은 색상차가 뚜렷한 경계 부근에 중간 색을 삽입하여 도형이나 글꼴이 주변 배경과 부드럽게 잘 어울리도록 하는 기법이다. 안티 알리아싱을 사용하면 출력 품질은 좋아지지만 중간 색상을 삽입하기 위한 연산을 해야 하므로 속도는 떨어진다.
- 아예 Paint 객체를 생성할 때 이 옵션을 지정할 수도 있다. new Paint(Paint.ANTI_ALIAS_FLAG)
3. Bitmaptompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
- 작도 메소드는 기본 도형을 그리기에는 적합하지만 사진 같은 복잡한 모양을 그리기에는 역부족하다. 그래서 화면 장식에는 미리 그려진 그림인 비트맵을 주로 많이 사용한다. tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
- 리소스로부터 로드한 비트맵을 화면으로 출력할 때는 Canvas의 drawBitmap 메소드를 사용한다.
- 객체 Factory 관리를 위한 BitmapFactory 클래스가 있다 BitmapFactory는 여러 가지 이미지 포맷을 decode해서 bitmap으로 변환하는 함수들로 되어 있다. 한마디로 Bitmap Object를 쉽게 만들 수 있도록 도와주는 클래스. 전부 static이며 decodeXXX라는 이름을 가진 메소드들로 이루어져 있다.
4. 애니메이션 타입 tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
- 프레임 애니메이션 : 주기적으로 그림을 교체하는 전통적인 방법이다. 일련의 정지된 그림을 빠르게 교체하면 움직이는 것처럼 보인다.
- 트윈 애니메이션 : 위치 이동이나 크기 변경, 회전 등의 효과를 일정한 시간내에 수행하여 애니메이션을 진행한다. 수학적 계산에 의해 장면들을 생성하므로 움직임이 부드럽고 여러 가지 효과를 조합할 수 있다. tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
5. SurfaceView tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
- 일반 뷰는 캔버스에 그리기를 수행한다. 모든 그리기는 자동으로 더블 버퍼링되므로 깜빡거림은 전혀 없다. 그러나 메인 스레드에서 그려야 하므로 속도가 빠르지 못하며 그리기를 하는 동안에는 사용자의 입력을 받을 수 없으므로 반응성이 좋지 못하다. 그리기 연산이 복잡한 프로그램은 onDraw를 실행하는 동안 스레드가 잠시 멈춘 것처럼 보이며 일시적으로 입력에 반응하지 못한다. 그렇다고 해서 그리기 동작을 스레드로 분리할 수도 없는데 왜냐하면 메인이 아닌 스레드는 뷰나 캔버스를 직접적으로 건드리지 못하기 때문이다. 이런 여러 가지 문제점을 해결하기 위한 장치가 바로 서피스 뷰이다.
- 일반 뷰는 캔버스를 가지지만 SurfaceView는 표면을 가진다. 표면(Surface)은 쉽게 말해 메모리에 있는 가상 화면이다. 어디까지나 메모리일 뿐이므로 스레드에서 미리 출력해 놓을 수 있으며 스레드가 표면에 그리는 동안 메인 스레드는 사용자의 입력을 즉시 처리할 수 있다. 표면은 메모리에 있을 뿐이지 화면과 구조가 같으므로 캔버스에 출력하는 것과 동일한 방법으로 출력한다. tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
- 서피스를 사용하려면 SurfaceView를 상속받는 뷰 클래스를 만든다. 뷰를 만든다고 해서 표면이 바로 생성되는 것은 아니며 뷰가 윈도우 관리자에 등록되고 레이아웃을 완료하여 크기와 위치가 결정된 후에 생성된다. tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
- 스레드는 표면이 준비되었을 때만 그리기를 해야하며 표면이 파괴되면 더 이상 그리기를 해서는 안된다. 따라서 메인 스레드는 표면의 변화를 통지받고 스레드에게 그리기 허용 여부를 알려주어야 하는데 이를 위해 SurfaceHolder.Callback 인터페이스의 다음 메소드를 구현해야 한다.
void surfaceCreated(SurfaceHolder holder) tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
표면이 처음 생성된 직후에 호출된다. 이 메소드가 호출된 이후부터 표면에 그리기가 허용된다. 단, 표면에는 한 스레드만 그리기를 수행할 수 있다. 메인 스레드가 이 콜백을 구현했다면 이 메소드가 호출되었을 때 그리기 스레드를 생성해야 한다.
void surfaceDestoryed(SurfaceHolder holder) tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
표면이 파괴되기 직전에 호출된다. 이 메소드가 리턴된 후부터 표면이 유효하지 않으므로 더 이상 그리기를 해서는 안된다. 스레드에게 그리기를 즉시 종료하도록 신호를 보내야 한다. tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
void surfaceChanged(SurfaceHolder holder, int format, int width, int height)
표면의 색상이나 포맷이 변경되었을 때 호출된다. 최소한 한번은 호출되므로 이 메서드로 전달된 인수를 통해 표면의 크기를 초기화 한다.
- 표면을 관리하는 주체는 SurfaceHolder 객체이다. 이 객체를 통해 표면의 크기나 색상 등을 관리하며 표면으로 출력을 내 보낼수도 있다.
- getHolder() 홀더 구하기, addCallback() 홀더를 구한 후 제일 먼저 할 일은 표면의 변화를 통지 받기위한 콜백 객체를 등록하는 것이다. 콜백 객체를 등록해 놓으면 시스템은 표면의 변화가 발생할 때마다 콜백의 메서드를 호출한다.
- lockCanvas는 표면을 잠그고 표면에 대한 캔버스를 제공한다. 이후 뷰에 그리듯이 모든 출력 메서드를 다 사용할 수 있으며 이 때 출력은 화면으로 바로 나가지 않고 표면의 비트맵에 그려진다. unlockCanvasAndPost 메서드는 표면 비트맵에 그려진 그림을 화면으로 내보내며 비로소 사용자 눈에 출력된 내용이 보이게 된다. tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
6. MediaPlayer p.1264 tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
- 오디오와 비디오를 모두 지원하며 다양한 소스의 미디어를 재생할 수 있다.
- MediaPlayer는 상태가 변경되거나 에러가 발생할 때 미리 등록된 콜백 메서드를 호출한다. 관심있는 사건에 대해 리스너를 등록해 놓으면 원하는 시점에 신호를 받을 수 있다. tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
void setOnErrorListener(~) tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
void setOnPreparedListener(~)
void setOnCompletionListener(~)
스트림을 끝까지 재생했을 때 호출되며 이 때 객체는 재생완료 상태이다.
void setOnBufferingUpdateListener(~)tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
스트리밍 시에 버퍼에 새로운 데이터가 들어왔을 때 호출된다.
void setOnSeekCompleteListener(~) tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
재생 위치 변경이 완료될 때 호출된다.
- 디폴트 생성자로 객체를 생성하고 setDataSource로 미디어를 준비시키고 prepare로 준비 상태를 알린다. 간단한 효과음의 경우에는 스트림만 여는 create로 준비상태를 만들면 간단하다. 그다음은 start메소드로 재생하고 release로 파괴한다.
7. MediaRecorder tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
- 안드로이드는 음성 녹음 및 영상 녹화를 위해 MediaRecoder 클래스를 제공한다. 사용하는 방법은 형제 클래스인 MediaPlayer와 거의 유사하다. 녹음을 하려면 RECORD_AUDIO, WRITE_EXTERNAL_STORAGE 퍼미션이 필요하다. tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
8. MediaStore tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
- 안드로이드 운영체제가 미디어를 DB로 관리하므로 멀티미디어 응용 프로그램은 미디어 DB를 통해 정보를 얻어야 한다.
- 미디어의 목록을 관리하는 클래스는 MediaStore 이되 이 클래스 자체는 몇가지 상수만 제공할 뿐이고 실제 관리 기능은 중첩된 내부 클래스가 담당한다. MediaStore는 문법적으로는 클래스이지만 자체적인 기능은 거의 없고 내부 클래스와 인터페이스를 담는 통에 불과하다.
9. MediaMetadataRetriever tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
- 미디어 파일로부터 프레임이나 메타 데이터를 얻기 위하여 사용되는 클래스 tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
10. MediaScannerConnection tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof
- MediaStore에 없는 것이 발견되면 찾아서 전달하는 클래스 tompa 모바일 프로그래밍 능력 시험 안드로이드 marcof