CHAP 8. 그래픽.

Slides:



Advertisements
Similar presentations
Android Application 데이터베이 스. 데이터베이스 활용하 기  안드로이드에 쓰이는 DBMS 의 이름은 SQLite.  SQLite 는 경량의 임베디드 데이터베이스 엔젠이며, 아이폰, 파이어폭스 등 여 러 곳에서 이미 많이 채택된 검증된 엔진이다. 
Advertisements

Unlocking Android 안드로이드 패키지 (1/2) 2 Unlocking Android 안드로이드 패키지 (2/2) 3.
CHAP 3. 첫번째 애플리케이션 예제 #1: text 문자를 출력 예제 #2: UI를 XML로 표현 – main.xml
6 메 뉴.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
Chapter04 캔버스(2) HTML5 Programming.
어서와 Java는 처음이지! 제20장 실전프로젝트 #2.
OpenCV 안드로이드 연동 환경설정 OpenCV-Android 를 다운 받습니다.
CHAP 8. 그래픽.
CHAP 18. 멀티미디어.
CHAP 10. 액티비티와 인텐트.
Android Programming 고급위젯
Contents 학습목표 이벤트를 처리하는 여러 가지 형식과 각 형식의 장단점에 대해 상세하게 연구하고 기본적인 이벤트에 대한 실습을 한다. 사용자의 입력을 자유자재로 처리하기 위해서 반드시 습득해야 하는 중요한 기술 실습. 학습내용 이벤트 핸들러 여러 가지 이벤트.
Android Application 애플리케이션 위젯.
CHAP 19. 구글맵.
Image & Video processing
Contents 학습목표 이벤트를 처리하는 여러 가지 형식과 각 형식의 장단점에 대해 상세하게 연구하고 기본적인 이벤트에 대한 실습을 한다. 사용자의 입력을 자유자재로 처리하기 위해서 반드시 습득해야 하는 중요한 기술 실습. 학습내용 이벤트 핸들러 여러 가지 이벤트.
CHAP 7. 메뉴와 대화상자.
Contents 학습목표 Canvas와 Paint 객체를 통해 화면에 원하는 도형을 그리고 속성을 변경하는 기본적인 방법에 대해 소개한다. 토스트로 메시지를 출력하는 방법과 스피커를 통해 소리를 출력하는 방법에 대해서도 알아본다. 학습내용 캔버스 그리기 객체 쉐이더 그외.
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
Power Java 제3장 이클립스 사용하기.
Java Seminar 6.
Ch.07-5 xml-rpc 사용하기 김상엽.
CHAP 4. 이벤트 처리.
CHAP 6. 이벤트 처리.
Lab 2 Guide: 교재 3장 그래픽 예제 ( 쪽) - 펜과 브러시로 그리기 - 튀는 공
UNIT 07 그림책 만들기 1/2 로봇 SW 콘텐츠 연구원 조용수.
CHAP 24. nfc와 앱위젯.
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
CHAP 11. 액티비티와 인텐트.
CHAP 7. 메뉴와 대화상자.
07. 메뉴와 대화상자 제목. 07. 메뉴와 대화상자 제목 메뉴를 작성하고 사용하는 방법을 배운다. 토스트의 다양한 출력 방법을 알아본다. 대화상자의 사용법을 익힌다.
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
Raster 애니메이션은 GIF Animator로 만들면 쉽다
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
CHAP 6. 이벤트 처리.
UNIT 05 신문 만들기 로봇 SW 콘텐츠 연구원 조용수.
CHAP 14. 데이터베이스와 환경 설정.
CHAP 13. 네트워크.
컴퓨터 프로그래밍 : 실습3 2장 데이터와 식.
분할 윈도, 다중 뷰… 영상 통신 연구실 권 동 진 발표 일 : 04월 27일.
CHAP 12. 리소스와 보안.
JAVA Canvas Swing.
Method & library.
자바응용.
Chapter03 캔버스(1) HTML5 Programming.
10장 tkinter로 GUI 만들기.
Unity로 만드는 안드로이드 앱 유니티 프로젝트의 구성 Made by Karoid.
HTML5 Canvas 태그 92팸 유승연 안동찬 엄태인 김영재.
CHAP 3. 첫번째 애플리케이션.
CHAP 5. 레이아웃.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
Clipping 이진학.
2강_첫번째 안드로이드 프로젝트 에뮬레이터(AVD) 만들기 처음 만들어 보는 프로젝트 전체적인 구성 살펴보기
Lab 8 Guide: 멀티스레딩 예제 2 * Critical Section을 이용한 멀티스레딩 동기화 (교재 15장, 쪽)
자바 5.0 프로그래밍.
Tween Animation 천승현.
11. 어댑터뷰 제목. 11. 어댑터뷰 제목 리스트뷰와 그리드뷰 활용법을 배운다. 갤러리와 스피너의 사용법을 익힌다.
학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성. 학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성.
12강. 컨트롤러 컨트롤러 클래스 제작 요청 처리 메소드 제작 뷰에 데이터 전달
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
05. 그래픽 빨간색 사각형 그리기 그래픽 그리기 발 표 자 : 07 정 경 오.
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
CHAP 11. 리소스와 보안.
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
CHAP 5. 메뉴와 대화상자.
그래픽 컨트롤 (Graphic Control)
Presentation transcript:

CHAP 8. 그래픽

안드로이드에서의 그래픽 XML 파일로 그래픽이나 애니메이션을 정의한다. 그 리는 작업은 안드로이드 시스템이 담당한다. onDraw() 메소드 안에 draw...()와 같은 메소드를 호 출하여 직접 그린다.

커스텀 뷰를 사용하여 그리기 ... class MyView extends View { public MyView(Context context) { super(context); setBackgroundColor(Color.YELLOW); } @Override protected void onDraw(Canvas canvas) { Paint paint = new Paint(); paint.setColor(Color.RED); canvas.drawLine(20, 50, 350, 50, paint); canvas.drawRect(10, 110, 350, 250, paint); canvas.drawCircle(50, 430, 100, paint); paint.setTextSize(50); canvas.drawText("텍스트도 그릴 수 있습니다", 10, 700, paint);

커스텀 뷰를 사용하여 그리기 public class GraphicsActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); MyView w = new MyView(this); setContentView(w); }

Canvas 클래스와 Paint 클래스 Canvas 클래스는 그림을 그리는 캔버스(화포)에 해 당

몇 개의 기초 도형 그리기 ... @Override protected void onDraw(Canvas canvas) { Paint paint = new Paint(); paint.setColor(Color.YELLOW); canvas.drawColor(Color.BLUE); canvas.drawRoundRect(new RectF(30,50,330,550), 15, 15, paint); canvas.drawOval(new RectF(450,50,750,550), paint); paint.setColor(Color.RED); canvas.drawArc(new RectF(30,600,330,1100), 360, 1000, true, paint); float[] pts= 30, 1250, 300, 1350, 300, 1350, 60, 1450, 60, 1450, 360, 1500; paint.setStrokeWidth(10); canvas.drawLines(pts, paint); }

커스텀 뷰를 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" > <kr.co.company.graphiccustomview.CustomView android:layout_height="match_parent" /> </LinearLayout>

커스텀 뷰를 XML에서 참조하기 ... public class CustomView extends View { public CustomView(Context context) { super(context); setBackgroundColor(Color.YELLOW); } public CustomView(Context context, AttributeSet attrs) { @Override protected void onDraw(Canvas canvas) { Paint paint = new Paint(); paint.setColor(Color.RED); canvas.drawArc(new RectF(10, 120, 110, 220), 120, 270, true, paint);

색상 색의 3원색인 Red, Green, Blue 성분을 8비트로 표 시 paint.setColor(0xFF0000); paint.setColor(Color.RED);

선의 스타일 FILL 도형의 내부를 채운다. FILL_AND_STROKE 도형의 내부를 채우면서 외곽선도 그린다. STROKE 도형의 외곽선만 그린다.

원호그리기 class MyView extends View { private Paint mPaints, mFramePaint;         private RectF mBigOval;         private float mStart, mSweep;         private static final float SWEEP_INC = 2;         private static final float START_INC = 15;         public MyView(Context context) {                super(context);                mPaints = new Paint();                mPaints.setAntiAlias(true);                mPaints.setStyle(Paint.Style.FILL);                mPaints.setColor(0x88FF0000);               mFramePaint = new Paint();                mFramePaint.setAntiAlias(true);                mFramePaint.setStyle(Paint.Style.STROKE);               mFramePaint.setStrokeWidth(3);                mFramePaint.setColor(0x8800FF00);                mBigOval = new RectF(100, 40, 900, 1000);         }

원호그리기 @Override protected void onDraw(Canvas canvas) {                canvas.drawColor(Color.YELLOW);                canvas.drawRect(mBigOval, mFramePaint);                canvas.drawArc(mBigOval, mStart, mSweep, false, mPaints);                mSweep += SWEEP_INC;                if (mSweep >360) {                        mSweep -= 360;                        mStart += START_INC;                        if (mStart >= 360)                               mStart -= 360; }                invalidate();      } public class MyArcActivity extends Activity {         protected void onCreate(BundlesavedInstanceState) {                super.onCreate(savedInstanceState);                setContentView(new MyView(this));        

원호그리기

앤티 에일리어싱 paint.setAntiAlias(true);

이미지 표시 리소스 폴더에 이미지 파일를 복사한다. 예를 들어서 android.png 파일을 프로젝트의 res/drawable 폴더에 복사 프로그램에서는 R.drawable.android로 참조 지원되는 파일 형식은 PNG (선호), JPG (가능), GIF (권장되지 않음)

이미지 표시하기: ImageView 사용 <?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" > <TextView android:layout_width="match_parent“ android:layout_height="wrap_content" android:text="@string/hello" /> <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:src="@drawable/android" /> </LinearLayout>

코드로 화면에 이미지 표시 class MyView extends View { public MyView(Context context) { super(context); setBackgroundColor(Color.YELLOW); } @Override protected void onDraw(Canvas canvas) { Paint paint = new Paint(); Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.android); canvas.drawBitmap(b, 0, 0, null); public class ImageDispActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); MyView w = new MyView(this); setContentView(w);

이미지 크기 변환 변환 행렬 사용 ... Matrix m = new Matrix();m.preScale(1, -1); Bitmap b = BitmapFactory.decodeResource(getResource(), R.drawable.android); Bitmap mb=Bitmap.createBitmap(b, 0, 0, b.getWidth(), b.getHeight(), m, false);

이미지 크기 변환 ... protected void onDraw(Canvas canvas) { Paint paint = new Paint(); Matrix m= new Matrix(); m.preScale(1, -1); Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.house); Bitmap mb = Bitmap.createBitmap(b, 0, 0, b.getWidth(), b.getHeight(), m, false); Bitmap sb = Bitmap.createScaledBitmap(b, 200, 200, false); canvas.drawBitmap(mb, 0, 0, null); canvas.drawBitmap(sb, 100, 100, null); }

도형 객체 사각형이나 원 같은 도형을 객체로 표시한다. Drawable 객체 XML로 객체를 생성 코드로 객체를 생성

XML로 도형 객체 정의 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape=["rectangle" | "oval" | "line" | "ring"] > <corners .... /> <gradient .... /> <padding .... /> <size .... /> <solid android:color="color" /> <stroke android:width="integer" .... /> </shape>

XML로 도형 객체 정의: 예제 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="#ff0000"/> </shape>

XML로 도형 객체 정의: 예제 ... LinearLayout mLinearLayout; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mLinearLayout = new LinearLayout(this); ImageView i = new ImageView(this); i.setImageDrawable(R.drawable.oval); i.setMinimumHeight(100); i.setMinimumWidth(100); mLinearLayout.addView(i); setContentView(mLinearLayout); }

예제: XML로 배경 정의 XML로 그라디언트로 채워진 사각형을 정의하고 이 것을 선형 레이아웃의 배경으로 하여 보자.

도형 정의

시용자 인터페이스 정의

예제: XML로 버튼 정의하기

에니메이션 프로퍼티 애니메이션(property animation) 뷰 애니메이션(view animation) 모든 객체의 속성을 애니메이션할 수 있다. 뷰 애니메이션(view animation) View 객체만을 애니메이션 드로워블 애니메이션(Drawable animation) 여러 장의 이미지를 사용

프로퍼티 애니메이션 다음과 같은 값들을 설정 가능 지속 시간(duration) 시간 보간(time interpolation): 시간의 함수로 값이 어떻게 변하는지를 정의 반복 횟수와 반복 동작(Repeat count and behavior) 애니메이터 집합(Animator sets): 애니메이션의 집합을 생성할 수 있다. 프레임 재생 지연(Frame refresh delay): 애니메이션을 다시 그리는 횟수를 설정한다.

선형 애니메이션 비선형 애니메이션

프로퍼티 애니메이션 코드

뷰 애니메이션

코드

드로워블 애니메이션 영화 필름처럼 여러 개의 이미지가 순서대로 재생되 어서 생성되는 전통적인 애니메이션

드로워블 애니메이션 애니메이션을 구성하는 프레임들을 나열하는 XML 파일을 생성

Lab: 랜덤 그래픽 작성

Lab: 그림판 앱 작성 윈도우에서 기존 제공되는 그림판과 유사한 애플리 케이션을 작성해보자

핵심 코드