본문 바로가기
프로그래밍/안드로이드

안드로이드 캔버스(Canvas)

by -현's- 2015. 3. 25.
반응형



●캔버스(Canvas)

- 화면에 어떤것을 그릴때 사용한다.


- 뷰의 onDraw()메서드 재정의가 필요하다.


- 안드로이드에서 제공하는 대부분의 안드로이드 위젯은 안드로이드에서 필요한 것이므로 개발자가 그래픽 처리를 함부로 하지 않는게 좋다.





●예제


- DrawTest.java

package study.graphic;


import com.example.day0321.R;


import android.app.Activity;

import android.os.Bundle;

import android.widget.Button;


public class DrawTest extends Activity{

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.myview);

}

}




- MyView.java

package study.graphic;


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.util.AttributeSet;

import android.view.View;


import com.example.day0321.R;


public class MyView extends View{


public MyView(Context context, AttributeSet attrs) {

super(context, attrs);

}

protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

//Canvas가 보유한 여러가지 기능 테스트

//사각형 그리기

Paint paint = new Paint();

paint.setColor(Color.GREEN);

canvas.drawRect(50, 100, 50+100, 100+200, paint);

//아이콘 그리기

//비트맵 이미지 객체 이용

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);

for(int i=0;i<100;i++){

canvas.drawBitmap(bitmap, 200+(i*20), 500+(i*20), null);

}

//텍스트 그리기

Paint paint2 = new Paint();

paint2.setColor(Color.BLUE);

paint2.setTextSize(80);

canvas.drawText("텍스트입니다.", 200, 200, paint2);

//선 그리기

Paint paint3 = new Paint();

paint3.setColor(Color.BLACK);

canvas.drawLine(200, 500, 500, 600, paint3);

}

}




- myview.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical" >

    

    <study.graphic.MyView 

        android:id="@+id/myView"

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:background="#ffdd00"/>

</LinearLayout>

















반응형

댓글