관리 메뉴

moozi

그래픽 2D 1 - 안드로이드 아이콘 띄우기, 커스텀뷰 활용 본문

안드로이드개발강좌

그래픽 2D 1 - 안드로이드 아이콘 띄우기, 커스텀뷰 활용

moozi 2010. 3. 4. 16:24


이번 강좌에서는 2D 그래픽 출력하기 입니다. 커스텀뷰를 이용해서 안드로이드 마스코트 아이콘을 화면에 출력해 보겠습니다.

1. 다음과 같이 프로젝트를 생성합니다.




2. src -> my.MyGraphic2D -> MyGraphic2D.java 를 다음과 같이 편집합니다.

package my.MyGraphic2D;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.Window;

public class MyGraphic2D extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE); // 타이틀바 제거
        setContentView(new CustomView(this)); // 커스텀뷰 CustomView를 출력
    }
   
    class CustomView extends View {
        public CustomView(Context context) {
            super(context);
        }
    
        @Override
        public void onDraw(Canvas canvas) {
         Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
            canvas.drawColor(Color.parseColor("#dedede"));
            canvas.drawBitmap(bm, 70, 70, null);
        }
    }
}

코드를 보면,

class CustomView extends View  에서 커스텀뷰(사용자가 정의한 뷰) CustomView 클래스는 View 클래스를 상속 받아 만듭니다.

public void onDraw(Canvas canvas) 에서 그림을 그리게 됩니다. canvas는 그림을 담을(hold) 수 있는 객체입니다.

Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.icon); 에서  R.drawable.icon( 안드로이드 마스코트 이미지 입니다. res -> drawable-hdpi -> icon.png ) 을 Bitmap 객체로 만듭니다.

canvas.drawColor(Color.parseColor("#dedede")); 는 배경색을 지정합니다. #dedede 는 옅은 회색입니다.

canvas.drawBitmap(bm, 70, 70, null); 비트맵(bm)을 왼쪽, 위쪽 70,70 좌표점에 그립니다.


3. Ctrl + F11 로 실행합니다.


회색 바탕에 안드로이드 마스코트 아이콘이 출력되었습니다.


다음 강좌 '[ 안드로이드 개발 2.0 ] 그래픽 2D 2 - SurfaceView 활용 1'로 이어집니다.


( 참고 : http://www.droidnova.com/playing-with-graphics-in-android-part-i,147.html )

Comments