반응형
안드로이드(Android) onDraw 함수를 이용해 화면에 비트맵이미지, 도형 그리기 |
환경 : Eclipse Mars, Android 4.2.2 |
이번예제는 메인화면에 ImageView 위젯으로 이미지를 그리는 것이 아니라 View 위젯에 onDraw() 함수를 이용해 비트맵이미지를 그려 넣습니다. 그리고 그 위에 도형도 그려 넣을 것입니다. 이렇게 onDraw 은 이미지를 보여줄뿐만 아니라 각 종 그림들을 그려넣을수 있는 기능을 제공합니다.
▼ 메인 activity 에서는 레이아웃 xml 을 이용하는 것이 아니라 아래에 생성한 View 객체를 setContentView() 인수로 넘겼습니다.
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_draw_bitmap); setContentView(new drawView(this)); }
▼ 그리고 View 위젯 클래스를 상속받아 만든 DrawView 클래스는 onDraw() 함수에 Canvas 객체로 비트맵 이미지를 그립니다. 예제는 drawBitmap() 로 left, top 값을 달리주면서 두개의 비트맵 이미지를 그려 보았습니다.
canvas.drawBitmap(myBitmap01, 0, 0, null); canvas.drawBitmap(myBitmap02, 150, 300, null);
▼ 이번에는 비트맵 이미지가 아닌 도형을 그려 봅니다. Canvas 객체의 역할은 우리가 도화지에 그림을 그리듯 View 에 그림을 그릴수 있도록 기능을 제공합니다. Canvas 의 drawRect() 함수를 이용해 사각형을 그립니다.
mPaint.setColor(Color.GREEN); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeWidth(3); canvas.drawRect(10, 10, 100, 100, mPaint);
▼ 아래는 화면에 비트맵과 사각형을 그린 View 객체의 전체 소스입니다.
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.graphics.Paint; import android.os.Bundle; import android.view.View; public class DrawBitmapActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // setContentView(R.layout.activity_draw_bitmap); setContentView(new DrawView(this)); } private class DrawView extends View { Bitmap myBitmap01, myBitmap02; Paint mPaint; public DrawView(Context context) { super(context); myBitmap01 = BitmapFactory.decodeResource(getResources(), R.drawable.view01); myBitmap02 = BitmapFactory.decodeResource(getResources(), R.drawable.view02); mPaint = new Paint(); } protected void onDraw(Canvas canvas) { canvas.drawBitmap(myBitmap01, 0, 0, null); canvas.drawBitmap(myBitmap02, 150, 300, null); mPaint.setColor(Color.GREEN); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeWidth(3); canvas.drawRect(10, 10, 100, 100, mPaint); } } }
반응형
'안드로이드 개발' 카테고리의 다른 글
안드로이드(Android) SurfaceView 와 Thread 를 이용해 화면에 도형표현 하기 (0) | 2014.12.01 |
---|---|
안드로이드(Android) 두개의 사용자정의 View 를 FrameLayout 으로 표현하기 (0) | 2014.11.30 |
안드로이드(Android) onDraw() 를 이용해 스크린터치로 원그리기 (1) | 2014.11.29 |
안드로이드(Android) 경고 - Custom view… overrides onTouchEvent but not performClick (0) | 2014.11.28 |
안드로이드(Android) 코드경고 – Avoid object allocations during draw/layout operations (preallocate and reuse instead) 해제 하기 (0) | 2014.11.26 |
안드로이드(Android) RSS 구현5 - RSS 제목별 상세내용 구현 (1) | 2014.11.25 |
안드로이드(Android) RSS 구현4 - RSS 피드 구현 제목,타이틀등 상세 구현 (0) | 2014.11.24 |
안드로이드(Android)RSS 구현3 - RSS 피드 읽어서 ListView 로 제목 표현하기 (0) | 2014.11.23 |