달력

1

« 2020/1 »

  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  

   

그래픽 주요 클래스

속성

설명

Canvas

뷰의 표면에 직접 그릴 수 있도록 만들어 주는 객체로 그래픽 그리기를 위한 메서드가 정의되어 있습니다.

Paint

그래픽 그리기를 위해 필요한 색상 등의 속성을 담고 있습니다.

Bitmap

픽셀로 구성된 이미지로 메모리 상에 그래픽을 그리는 데 사용됩니다.

Drawable

사각형, 이미지 등의 그래픽 요소가 객체로 정의되어 있습니다.

   

   

그리기 관련 주요 메서드 

속성

설명

점 그리기

void drawPoint(float x, float y, Paint paint)

하나의 점을 그림. drawPoints()를 이용하면 여러 개의 점을 그릴 수 있습니다.

선 그리기

void drawLine(float startX, float startY, float stopX, floatY, Paint paint)

두 점의 x, y 좌표값을 이용해 선을 그립니다.

drawLines()를 이용하면 여러 개의 선을 그릴 수 있습니다.

사각형 그리기

void drawRect(float left, float top, float right, float bottom, Paint paint)

모서리의 자표값을 이용해 사각형을 그립니다.

둥근 모서리의 사각형 그리기

void drawRoundRect(RectF rect, float rx, float ry, Paint paint)

사각 영역과 모서리 부분 타원의 반지름 값을 이용해 둥근 모서리의 사각형을 그립니다.

원 그리기

void drawCircle(float cx, float cy, float radius, Paint paint)

원의 중앙 좌표값과 반지름을 이용해 원을 그립니다.

타원 그리기

void drawOval(RectF oval, Paint paint)

사각 영역을 이용해 타원을 그립니다

아크 그리기

void drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint)

사각 영역과 각도를 이용해 아크를 그립니다

패스 그리기

void drawPath(Path path, Paint paint)

패스 정보를 이용해 연결선 또는 부드러운 곡선을 그립니다

비트맵 그리기

void drawBitmap(Bitmap bitmap, float left, float top, Paint paint)

비트맵 이미지를 주어진 좌표값에 그립니다

   

   

그래픽 그리기 단계

1

새로운 클래스 생성 후 View를 상속

2

Context객체 하나를 파라미터로 가지는 생성자 정의

3

그리기 객체 초기화 및 필요한 속성 설정

4

onDraw()메소드 내에서 그리기 객체 호출

5

onTouch()메소드 내에서 터치 이벤트 처리

6

새로 만든 View클래스를 메인 액티비티에 추가

   

XML레이아웃에 새로 생성한 View를 element로 직접 지정 시

XML레이아웃에 새로 생성한 View를 element로 직접 지정 시 반드시 아래 생성자를 정의해 주어야 합니다.

//XML에 element로 지정시 반드시 아래 생성자 정의

public MyView(Context context, AttributeSet attributeSet){

super(context, attributeSet);

}

   

메인 액티비티에 추가할 때 소스 코드

new연산자를 통해 객체를 생성한 후 setContentView()메소드로 화면 전체에 보여줍니다.

MyView myView = new MyView(this);

setContentView(myView);

   

그리기 메소드

onDraw()

뷰가 화면에 디스플레이될 때 자동으로 호출됩니다.

onTouch()

터치 이벤트를 처리합니다.

   

   

Canvas 와 Paint 다루기

 

Canvas

Canvas(android.graphics.Canvas)는 직사각형 영역에 뭔가를 그리는 수단들을 제공합니다.

Paint

Paint 클래스는 스타일과 복합 색 및 렌더링 정보를 캡슐화합니다.

 

설정

메소드

색상 설정

setColor(Color.RED)

안티앨리어싱 설정

New Paint(Paint.ANTI_ALIAS_FLAG)

스타일 설정

setStyle(Paint.Style.STROKE)

외곽선만 나타나고 색이 채워지지 않음

그래디언트 설정

setShader()

   

 

도형 그리기

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(new MyCanvas(this));

}

private class MyCanvas extends View{

 

public MyCanvas(Context context) {

super(context);

}

protected void onDraw(Canvas canvas){

canvas.drawColor(Color.WHITE);

Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);

paint.setColor(Color.BLUE);

 

//원

canvas.drawCircle(100,100,50,paint);

 

paint.setColor(Color.YELLOW);

//사각형

canvas.drawRect(200, 200, 300, 300, paint);

}

}

   

 

비트맵 이미지 처리

 

비트맵 이미지 그리기

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

canvas.drawBitmap(bitmap, 0, 0, null);

   

비트맵 이미지 크기 조정하기

bitmap2=Bitmap.createScaledBitmap(bitmap,100,80,false);

canvas.drawBitmap(bitmap2, 0,300, null);

   

비트맵 이미지가 사용한 메모리 해지하기

bitmap.recycle();

bitmap2.recycle();

 

SDCard에서 비트맵 이미지 읽기

File file=new File(Environment.getExternalStorageDirectory(),fileName);

FileInputStream fis=null;

try{

fis=new FileInputStream(file);

}catch(FileNotFoundException e){}

Log.d("error",String.format("[%s] is not found",fileName));

return;

   

   

Posted by codedragon codedragon

댓글을 달아 주세요

ImageView

이미지뷰는 Activity로 이미지를 표시하기 위한 뷰, PNG, JPEG,GIF형식의 이미지를 취급

   

   

이미지 포멧 

이미지 형식

필수 확장자

설명

PNG(Portable Network Graphics)

png

권장됨(무손실)

투명이미지(고품질)

안드로이드 표준

아홉 조각 확장성 이미지

(9-Patch Stretchable Image)

9.png

-권장됨(무손실)

-아이콘 이미지로도 제작가능

-외곽부분을 확장가능

JPG(Joint Photographic Experts Group

jpg, .jpeg

권장되지는 않음(유손실)

압축률이 가장 좋음

GIF(Graphics Interchange Format)

gif

사용하지 않는 것이 좋음

투명이미지(저품질)

   

   

이미지 파일명

영문과 숫자만 사용, 소문자만 사용(구분을 용이하게 하기 위해)

 

   

   

이미지저장 경로

/res/drawable-xxxxdpi

   

   

XML 레이아웃 파일에 기재되는 주요 속성

속성

의미

android:src

리소스 지정(@[package:]type:name), 데이터지정(?[package;][type:]name), 색지정(#rgb, #aarrggbb등)

뷰에 표시하는 이미지나 색을 지정함

android:maxHeight

단위(sp나 mm)를 붙인 부동소수점수

이미지의 최대 높이 설정

android:maxWidth

단위(sp나 mm)를 붙인 부동소수점수

이미지의 최대 넓이 설정

android:scaleType

center 나 fitXY 등 으로 정의된 값

리사이즈나 이동 때의 방법(이미지의 확대/축소 방식 지정)

Android:adjustViewBounds

True|false

View의 가로,세로 비율을 맞추기 위해 이미지 조정 여부 true면 조정

android:scaleType

matrix

이미지를 틀에 맞게 조정하지 않고, ImageView의 왼쪽 상단을 기준으로 이미지를 표현한다. 즉, 이미지가 틀보다 크거나 작아도 그대로 표현된다.

fitXY

이미지를 틀에 꽉 차게 맞추어서 표현한다. 이미지 비율과 상관없이 틀에 맞추기 때문에 이미지가 찌그러져 보인다.

fitStart

이미지를 틀에 맞게 비율을 맞추고, ImageView의 왼쪽 상단을 기준으로 이미지를 표현한다.

fitCenter

이미지를 틀에 맞게 비율을 맞추고, ImageView의 중앙을 기준으로 이미지를 표현한다.

fitEnd

이미지를 틀에 맞게 비율을 맞추고, ImageView의 오른쪽 하단을 기준으로 이미지를 표현한다.

center

이미지를 틀에 맞게 조정하지 않고, ImageView의 중앙을 기준으로 이미지를 표현한다. 즉, 이미지가 틀보다 크거나 작아도 그대로 표현된다.

centerCrop

이미지의 가로 및 세로가 틀의 크기보다 크거나 같도록 조정해서 표현한다.

centerInside

이미지의 가로 및 세로가 틀의 크기보다 작거나 같도록 조정해서 표현한다.

  

 ImageView의 틀에 맞게 이미지의 크기를 조작하거나 이동시킵니다.

android:tint

색지정(#rgb, #aarrggbb등)

이미지뷰에보이는 이미지 위에 색상을 적용시

 

Posted by codedragon codedragon

댓글을 달아 주세요