SlideShare a Scribd company logo
1 of 24
0.  그래픽과 애니메이션 2 안드로이드 플랫폼은 다음 세 종류의 그래픽 애니메이션을 기본적으로 지원한다 . 1.  애니메이티드  GIF(Animated GIF)  이미지 애니메이티드  GIF  애니메이션의 여러 프레임 이미지들은 하나의  GIF  파일을 저장한 것임 .  애니메이티드  GIF  파일을  다른 비트맵 표시물 자원과 마찬가지 방식으로 화면에 표시하면 안드로이드 운영체제가 애니메이션을 수행시켜 줌 . 2.  프레임별 애니메이션 프레임별 애니메이션은 프레임별 이미지들을 개발자가 모두 제공해야 함 . 3.  트위닝 애니메이션 트위닝 애니메이션은 이미지의 위치와 형태를 코드에서 변환함으로써 애니메이션 효과를 냄 .
1.  애니메이션 1-1.  프레임별 애니메이션 프레임별 애니메이션 (frame-by-animation) 은 조금씩 다른 이미지들을 차례로 빠르게 화면에 표시함으로써 사물이 움직이는 듯한 환상을 만들어 내는 것이다 .  페이지를 빠르게 넘기면 그림이 움직이는 효과의 디지털 버전이라고 생각하면 된다 .  애니메이티드  GIF 도  본질적으로는 프레임별 애니메이션에 해당한다 .  이런 프레임별 애니메이션은 코드로 정의하기에는 너무 복잡한 그래픽 변형들에 적합하다 . 애니메이션의 매끄러움은 프레임 이미지들의 수와 그 이미지들의 교체 빠르기에 의해 결정된다 . 지니는 프레임들에서 변하지 않지만 ,  선물 상자들은 그 위치가 조금씩 다르다 . 이 지니 파일들을 이용해서 수행하는 코드를 작성해보자 . 애니메이션의 조작을 위해서 사용할 패키지 –  android.graphics.drawable.AnimationDrawable;; 1.  애니메이션이 계속해서 반복되도록 해주는  객체명 .setOneShot()  메소드  (true –  한번만  / false –  반복 ) 2.  애니메이션을 시작하게 해주는  객체명 .start()  메소드 3.  애니메이션을 멈추게 하는  객체명 .stop()  메소드 프레임 애니메이션 구현방법 (1) AnimationDrawable 과  ImageView  위젯을 이용해서 애니메이션을 수행 (2) ImageSwitcher  위젯에 프레임 이미지들을 비트맵 자원으로서 추가하고 코드에서 타이머를 이용해 애니메이션 효과를 얻을 수 있음 .
1.  애니메이션 1-1.  프레임별 애니메이션 ( 실습 1)
1.  애니메이션 1-1.  프레임별 애니메이션 ( 실습 2) ImageSwitcher  위젯에 프레임 이미지들을 비트맵 자원으로서 추가하고  코드에서 타이머를 이용해 애니메이션 효과를 얻을 수 있음 .  참고코드를 타이핑 하기 보단 붙여넣기로 수행해 봅시다 .
1.  애니메이션 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
1.  애니메이션 1-2.  트위닝 애니메이션  ( 개념 ) 자원 파일에 정의 된 애니메이션을 코드에서 불러올 때에는 보조 클래스  AnimationUtils 를 사용한다 . 다음은  animationResourceID 에서 불러온 애니메이션을  green_rect 을 표시하는  ImageViewForTweening 에 적용하는 예이다 . 응용 프로그램이 애니메이션의 시작이나 종료 ,  반복 같은 애니메이션 사건들에 반응하도록 만들 수도 있다 . 그러기 위해선 s AnimationListener  인터페이스의 적절한 콜백 메서드들을 구현해야 한다 .
1.  애니메이션 1-2.  트위닝 애니메이션  ( 이론 )  - 1. AlphaAnimation( 투명도 변경 ) 알파 변환을 이용해서 애니메이션 투명도를 바꿀 수 있다 . 알파 변환은 대상을 서서히 보이게 보이지 않게 하거나 페이드인 / 페이드 아웃 여러 객체들을 화면에 겹치고자 할 때 유용하다 . 알파 값은  0.0( 완전 투명 – 안보임 ) ~ 1.0( 완전 불투명 – 보임 )  지정 가능하다 . 알파 애니메이션의 주요 속성으로는 시작 투명도  fromAlpha 와 종료 투명도  toAlpha 가 있다 . 다음은 대상을  5 초간 “페이드 인” 하는  ( 완전 투명에서 완전 불투명으로 )  투명도 변경 애니메이션을 정의하는  XML  자원 파일 . <alpha android:fromAlpha=“0.0” android:toAlpha=“1.0” android:duration=“5000”> </alpha> 코드에서는  android.view.animation  패키지의  AlphaAnimation  클래스를 이용해서 이와 동일한 애니메이션을 만들 수 있다 .
1.  애니메이션 1-2.  트위닝 애니메이션  ( 실습 1) - 1. AlphaAnimation( 투명도 변경 -1) /drawable/green_rect.xml /anim/transparency.xml ① ② ③
1.  애니메이션 1-2.  트위닝 애니메이션  ( 실습 1) - 1. AlphaAnimation( 투명도 변경 -2) ① ②
1.  애니메이션 1-2.  트위닝 애니메이션  ( 이론 )  - 2. Scale Animation( 비례  변경 ) 비례 변환은 대상을 수직이나 수평으로 늘리거나 줄이는 것 . 비례 변환의 정도는 대상의 원래 길이 ( 너비 혹은 높이 ) 에 대한 비율로 설정  1.0 은  100%, 0.5 는  50% 를 의미 수평과 수직 비율을 각각 다르게 설정하는 것이 가능하며 ,  대상의 종횡 비를 유지하려면 같게 설정해줘야 한다 . 설정해줘야 할 속성은 총  4 가지이며 ,  비례변환에서도 변환의 중심축  x, y 를 설정할 수 있다 . 애니메이션 시작 비율  (fromXScale, fromYScale) 애니메이션 종료 비율  (toXScale, toYScale) 다음은 대상의 중심을 축으로 해서  5 초간 대상의 크기를 두배로 늘리는 비례 변환 애니메이션을 정의하는  XML  부분이다 . <scale android:pivotX=“50%” android:pivotY=“50%” android:fromXScale=“1.0” android:fromYScale=“1.0” android:toXScale=“2.0” android:toYScale=“2.0” android:duration=“5000” /> 코드에서는  android.view.animation  패키지의  ScaleAnimation  클래스를 이용해서 이와 동일한 애니메이션을 만들 수 있음 .
1.  애니메이션 1-2.  트위닝 애니메이션  ( 실습 1) - 2. Scale Animation( 비례  변경 ) ① ③ ② /anim/grow.xml ④
1.  애니메이션 1-2.  트위닝 애니메이션  ( 이론 )  - 3. Translate(  이동  ) 이동 변환은 말 그대로 대상을 이동하는 것임 . 이동 변환을 위해서는 대상의 위치 변화를 정의하여야 한다 .  구체적으로 대상의 현재 위치에 상대적인 시작 위치와 현재 위치 에서 상대적인 목표 위치를 지정해야 한다 . 상대적인 시작 위치 (fromXDelta, fromYDelta) 상대적인 목표 위치 (toXDelta, toYDelta) 다음은  5 초간 대상을  Y 축을 따라 위쪽으로 ( 음의 방향 ) 100 픽셀 이동하는 변환을 정의한  XML  부분임 . fillAfter 를  true 로 설정하면 대상이 다시 원래의 위치로 돌아오지 않는다 . <translate  android:toYDelta=“-100” android:fillAfter=“true” android:duration=“2500” /> 코드에서는  android.view.animation  패키지의  TranslateAnimation  클래스를 이용해서 이와 동일한 애니메이션을 만들 수 있다 .
1.  애니메이션 1-2.  트위닝 애니메이션  ( 실습 1) - Translate(  이동  ) ① ③ ② /anim/translate_position.xml ③ ④
1.  애니메이션 1-2.  트위닝 애니메이션  ( 이론 )  - 4. Rotate Animation(  회 전  ) 회전 변환은 한 점을 중심으로 대상을 시계 방향 또는 반 시계 방향으로 돌리는 것이다 . 회전의 주요 속성은 시작 각도  fromDegrees 와 종료 각도  toDegrees  이다 .  회전 방향은 이 각도에 의해 암묵적으로 결정된다 .  예를 들어 대상 객체를 한 바퀴 돌린다고 할 때 ,  fromDegrees 를  0 도로 , toDegrees 를  360 로 설정하면 시계 방향으로 회전 되고 toDegrees 를  -360 로 설정하면 반 시계 방향으로 회전 된다 . 회전 축 ( 회전의 중심 좌표는 기본적으로  (0, 0),  즉 객체의 왼쪽 상단 모서리이다 .  이는 시계 바늘 같은 경우에 적합하다 . 그러나 객체 자신의 중심을 회전축으로 두어야 하는 경우가 더 많으므로 회전 축은  pivotX, pivitY  특성들로 정의 할 수 있다 . 이 특성들은 좌표 값 뿐만 아니라 퍼센트 값 ( 객체의 중심을 지정할 때 편하다 ) 도 허용한다 . 다음은 대상의 중심을 회전 축으로 하여  5 초간 대상을 시게 방향으로 완전히 한 바퀴 돌리는 회전 애니메이션  XML  부분임 . <rotate android:fromDegees=“0” android:toDegrees=“360” android:pivotX=“50%” android:pivotY=“50%” android:duration=“5000” /> 코드에서는  android.view.animation  패키지의  RotateAnimation  클래스를 이용해서 이와 동일한 애니메이션 구현 가능 .
1.  애니메이션 1-2.  트위닝 애니메이션  ( 실습 1) – 4. Rotate Animation( 회전 ) ① ③ ② /anim/sipn.xml ④
1.  애니메이션 1-2.  트위닝 애니메이션  ( 실습 1) – 4. Rotate Animation( 회전 ) ① ③ ② /anim/sipn.xml ④
2.  그래픽 – 비트맵 다루기 심화 기술 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
2.  그래픽 – 비트맵 다루기 심화 기술 Resiezed  객체 크기를  150, 250 에서  500, 500 으로 바꿔봅시다 (1) Matrix ImageView 의 틀을 기준으로 해서 왼쪽 상단을 꼭지점으로 정렬 .  틀보다 작거나 커도 잘라져서 그대로 표현 .
2.  그래픽 – 비트맵 다루기 심화 기술 (2) FIT_XY 원래 이미지 이미지가  ImageView 를 보다 작거나 크든지 간에 이미지를 틀에 맞추는 것
2.  그래픽 – 비트맵 다루기 심화 기술 (3) FIT_START , FIT_CENTER, FIT_END 이미지크기를 틀에 맞게 비율을 줄이되 이미지 시작지점을  ImageView  왼쪽 상단에 맞추어 그림을 표현 Resiezed  객체 크기를  350, 200  으로 바꿔봅시다 (4) FIT_CENTER 이미지크기를 틀에 맞게 비율을 줄이되  ImageView  중앙에 맞추어 표현 (5) FIT_END 이미지크기를 틀에 맞게 비율을 줄이되  ImageView 의 오른쪽 아래에 맞추어 이미지를 표현한다 .
2.  그래픽 – 비트맵 다루기 심화 기술 (6) CENTER 이미지크기 그대로 표현하되 이미지를 틀에 맞게 줄이지는 않는다 .  그리고  ImageView  틀의 중앙에 위치시킨다 . Padding  된  3px  크기의 여유 공간을 넘어가서 그대로 표현됨
2.  그래픽 – 비트맵 다루기 심화 기술 (7) CENTER_CROP 6 번에서의 그림은 높이가  ImageView 의 틀과 맞지 않다 .  이것처럼 한쪽이 틀과 맞지 않다면 틀에 맞게 이미지를 늘이면서 다른 한쪽도 같이 비율에 맞게 증가시킨다 .  그러면  6 번 그림은 높이가 증가한 비율만큼 넓이가 증가하여 표현되기 된다 . 그리고 그림의 위치는 틀의 중앙에서 표현된다 . Top 과  Bottom 의  Padding  된  3px  크기의 여유 공간은 보존된다 .
2.  그래픽 – 비트맵 다루기 심화 기술 (8) CENTER_INSIDE 7 번에서의 내용과 반대로  ImageView 의 틀에 벗어나는 쪽을 맞추어 비율을 줄여 표현한다 .  만약넓이가 틀에서 벗어난다면  넓이를 틀에 맞추고 그 비율만큼 높이를 줄이게 될 것이다 . CENTER_CROP, CENTER_INSIDE 는  ImageView 의 틀에 맞게 이미지를 조정하는 것이 공통적인 특징이다 . Padding  된  3px  크기의 여유 공간은 보존된다 .
1.  애니메이션 1-2.  트위닝 애니메이션  ( 실습 ) –  모든 효과 적용하는 애니메이션 구현

More Related Content

Viewers also liked

Introductiedag 11 12 [compatibiliteitsmodus]
Introductiedag 11 12 [compatibiliteitsmodus]Introductiedag 11 12 [compatibiliteitsmodus]
Introductiedag 11 12 [compatibiliteitsmodus]CVO-SSH
 
Empower students to write with digital tools slide share
Empower students to write with digital tools slide shareEmpower students to write with digital tools slide share
Empower students to write with digital tools slide shareKevin Amboe
 
Indonesia friendly memory championship i mengasah daya ingat lewat kompetisi
Indonesia friendly memory championship i  mengasah daya ingat lewat kompetisiIndonesia friendly memory championship i  mengasah daya ingat lewat kompetisi
Indonesia friendly memory championship i mengasah daya ingat lewat kompetisiYudi Lesmana
 
Денис Марголин, как Apple превращается в мобильную компанию
Денис Марголин, как Apple превращается в мобильную компаниюДенис Марголин, как Apple превращается в мобильную компанию
Денис Марголин, как Apple превращается в мобильную компаниюalarin
 
Pictures of students in sw 475
Pictures of students in sw 475Pictures of students in sw 475
Pictures of students in sw 475pegart
 
Aprendiendo uml en_24_horas
Aprendiendo uml en_24_horasAprendiendo uml en_24_horas
Aprendiendo uml en_24_horascesaraugusta
 
Yahoo! Network Plus 2_4_11
Yahoo! Network Plus 2_4_11Yahoo! Network Plus 2_4_11
Yahoo! Network Plus 2_4_11Devan McCoy
 
Lesdag 3 denken over de mens premodern modern postmodern
Lesdag 3 denken over de mens premodern modern postmodernLesdag 3 denken over de mens premodern modern postmodern
Lesdag 3 denken over de mens premodern modern postmodernCVO-SSH
 
Lesdag 1 filosofische en ethische vraagstukken opzet en programma
Lesdag 1 filosofische en ethische vraagstukken opzet en programmaLesdag 1 filosofische en ethische vraagstukken opzet en programma
Lesdag 1 filosofische en ethische vraagstukken opzet en programmaCVO-SSH
 
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)"Опыт создания системы управления сборкой и тестированием" (слайдкаст)
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)SPB SQA Group
 

Viewers also liked (15)

08 Cascadas De Amor 2
08  Cascadas De  Amor 208  Cascadas De  Amor 2
08 Cascadas De Amor 2
 
Ir
IrIr
Ir
 
Introductiedag 11 12 [compatibiliteitsmodus]
Introductiedag 11 12 [compatibiliteitsmodus]Introductiedag 11 12 [compatibiliteitsmodus]
Introductiedag 11 12 [compatibiliteitsmodus]
 
Empower students to write with digital tools slide share
Empower students to write with digital tools slide shareEmpower students to write with digital tools slide share
Empower students to write with digital tools slide share
 
Indonesia friendly memory championship i mengasah daya ingat lewat kompetisi
Indonesia friendly memory championship i  mengasah daya ingat lewat kompetisiIndonesia friendly memory championship i  mengasah daya ingat lewat kompetisi
Indonesia friendly memory championship i mengasah daya ingat lewat kompetisi
 
Денис Марголин, как Apple превращается в мобильную компанию
Денис Марголин, как Apple превращается в мобильную компаниюДенис Марголин, как Apple превращается в мобильную компанию
Денис Марголин, как Apple превращается в мобильную компанию
 
Pictures of students in sw 475
Pictures of students in sw 475Pictures of students in sw 475
Pictures of students in sw 475
 
Aprendiendo uml en_24_horas
Aprendiendo uml en_24_horasAprendiendo uml en_24_horas
Aprendiendo uml en_24_horas
 
Euskara, sarea eta lana (Eneko Astigarraga)
Euskara, sarea eta lana (Eneko Astigarraga)Euskara, sarea eta lana (Eneko Astigarraga)
Euskara, sarea eta lana (Eneko Astigarraga)
 
Yahoo! Network Plus 2_4_11
Yahoo! Network Plus 2_4_11Yahoo! Network Plus 2_4_11
Yahoo! Network Plus 2_4_11
 
Lesdag 3 denken over de mens premodern modern postmodern
Lesdag 3 denken over de mens premodern modern postmodernLesdag 3 denken over de mens premodern modern postmodern
Lesdag 3 denken over de mens premodern modern postmodern
 
Lesdag 1 filosofische en ethische vraagstukken opzet en programma
Lesdag 1 filosofische en ethische vraagstukken opzet en programmaLesdag 1 filosofische en ethische vraagstukken opzet en programma
Lesdag 1 filosofische en ethische vraagstukken opzet en programma
 
LE LABEL BAI EUSKARARI: CRITERES D'OBTENCION
LE LABEL BAI EUSKARARI: CRITERES D'OBTENCIONLE LABEL BAI EUSKARARI: CRITERES D'OBTENCION
LE LABEL BAI EUSKARARI: CRITERES D'OBTENCION
 
Installation of sensor wires and loggers
Installation of sensor wires and loggersInstallation of sensor wires and loggers
Installation of sensor wires and loggers
 
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)"Опыт создания системы управления сборкой и тестированием" (слайдкаст)
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)
 

Similar to 안드로이드스터디 11

안드로이드스터디 7
안드로이드스터디 7안드로이드스터디 7
안드로이드스터디 7jangpd007
 
VLFeat SIFT MATLAB application 테크니컬 리포트
VLFeat SIFT MATLAB application 테크니컬 리포트VLFeat SIFT MATLAB application 테크니컬 리포트
VLFeat SIFT MATLAB application 테크니컬 리포트Hyunwoong_Jang
 
Unity3D - SmoothMoves
Unity3D -  SmoothMovesUnity3D -  SmoothMoves
Unity3D - SmoothMovesSungWook Hong
 
이미지와 애니메이션 효과 적용하기
이미지와 애니메이션 효과 적용하기이미지와 애니메이션 효과 적용하기
이미지와 애니메이션 효과 적용하기Devgear
 
[NEXT] Android 개발 경험 프로젝트 1일차 (Widget, Linear Layout)
[NEXT] Android  개발 경험 프로젝트 1일차 (Widget, Linear Layout) [NEXT] Android  개발 경험 프로젝트 1일차 (Widget, Linear Layout)
[NEXT] Android 개발 경험 프로젝트 1일차 (Widget, Linear Layout) YoungSu Son
 
Unreal animation system
Unreal animation systemUnreal animation system
Unreal animation systemTonyCms
 
파이어몽키 3D 애플리케이션 만들기
파이어몽키 3D 애플리케이션 만들기파이어몽키 3D 애플리케이션 만들기
파이어몽키 3D 애플리케이션 만들기Devgear
 
Java, android 스터티7
Java, android 스터티7Java, android 스터티7
Java, android 스터티7Heejun Kim
 
안드로이드스터디 4
안드로이드스터디 4안드로이드스터디 4
안드로이드스터디 4jangpd007
 
100만 달러짜리 빠른앱 만드는 비법
100만 달러짜리 빠른앱 만드는 비법100만 달러짜리 빠른앱 만드는 비법
100만 달러짜리 빠른앱 만드는 비법SooHwan Ok
 
200819 NAVER TECH CONCERT 01_100만 달러짜리 빠른 앱을 만드는 비법 전수
200819 NAVER TECH CONCERT 01_100만 달러짜리 빠른 앱을 만드는 비법 전수200819 NAVER TECH CONCERT 01_100만 달러짜리 빠른 앱을 만드는 비법 전수
200819 NAVER TECH CONCERT 01_100만 달러짜리 빠른 앱을 만드는 비법 전수NAVER Engineering
 
[Paper Review] Image captioning with semantic attention
[Paper Review] Image captioning with semantic attention[Paper Review] Image captioning with semantic attention
[Paper Review] Image captioning with semantic attentionHyeongmin Lee
 
Html5 canvas sprite animation
Html5 canvas sprite animationHtml5 canvas sprite animation
Html5 canvas sprite animationSangHun Lee
 
Material design_update 1_material system and motion
Material design_update 1_material system and motionMaterial design_update 1_material system and motion
Material design_update 1_material system and motionWoncheol Lee
 

Similar to 안드로이드스터디 11 (15)

안드로이드스터디 7
안드로이드스터디 7안드로이드스터디 7
안드로이드스터디 7
 
VLFeat SIFT MATLAB application 테크니컬 리포트
VLFeat SIFT MATLAB application 테크니컬 리포트VLFeat SIFT MATLAB application 테크니컬 리포트
VLFeat SIFT MATLAB application 테크니컬 리포트
 
Unity3D - SmoothMoves
Unity3D -  SmoothMovesUnity3D -  SmoothMoves
Unity3D - SmoothMoves
 
이미지와 애니메이션 효과 적용하기
이미지와 애니메이션 효과 적용하기이미지와 애니메이션 효과 적용하기
이미지와 애니메이션 효과 적용하기
 
[NEXT] Android 개발 경험 프로젝트 1일차 (Widget, Linear Layout)
[NEXT] Android  개발 경험 프로젝트 1일차 (Widget, Linear Layout) [NEXT] Android  개발 경험 프로젝트 1일차 (Widget, Linear Layout)
[NEXT] Android 개발 경험 프로젝트 1일차 (Widget, Linear Layout)
 
Unreal animation system
Unreal animation systemUnreal animation system
Unreal animation system
 
파이어몽키 3D 애플리케이션 만들기
파이어몽키 3D 애플리케이션 만들기파이어몽키 3D 애플리케이션 만들기
파이어몽키 3D 애플리케이션 만들기
 
gv008 ver0.1
gv008 ver0.1gv008 ver0.1
gv008 ver0.1
 
Java, android 스터티7
Java, android 스터티7Java, android 스터티7
Java, android 스터티7
 
안드로이드스터디 4
안드로이드스터디 4안드로이드스터디 4
안드로이드스터디 4
 
100만 달러짜리 빠른앱 만드는 비법
100만 달러짜리 빠른앱 만드는 비법100만 달러짜리 빠른앱 만드는 비법
100만 달러짜리 빠른앱 만드는 비법
 
200819 NAVER TECH CONCERT 01_100만 달러짜리 빠른 앱을 만드는 비법 전수
200819 NAVER TECH CONCERT 01_100만 달러짜리 빠른 앱을 만드는 비법 전수200819 NAVER TECH CONCERT 01_100만 달러짜리 빠른 앱을 만드는 비법 전수
200819 NAVER TECH CONCERT 01_100만 달러짜리 빠른 앱을 만드는 비법 전수
 
[Paper Review] Image captioning with semantic attention
[Paper Review] Image captioning with semantic attention[Paper Review] Image captioning with semantic attention
[Paper Review] Image captioning with semantic attention
 
Html5 canvas sprite animation
Html5 canvas sprite animationHtml5 canvas sprite animation
Html5 canvas sprite animation
 
Material design_update 1_material system and motion
Material design_update 1_material system and motionMaterial design_update 1_material system and motion
Material design_update 1_material system and motion
 

More from jangpd007

자바스터디 4
자바스터디 4자바스터디 4
자바스터디 4jangpd007
 
자바스터디 3 3
자바스터디 3 3자바스터디 3 3
자바스터디 3 3jangpd007
 
자바스터디 3 2
자바스터디 3 2자바스터디 3 2
자바스터디 3 2jangpd007
 
자바스터디 3 1
자바스터디 3 1자바스터디 3 1
자바스터디 3 1jangpd007
 
자바스터디 2
자바스터디 2자바스터디 2
자바스터디 2jangpd007
 
자바스터디 1
자바스터디 1자바스터디 1
자바스터디 1jangpd007
 
안드로이드스터디 14
안드로이드스터디 14안드로이드스터디 14
안드로이드스터디 14jangpd007
 
안드로이드스터디 13
안드로이드스터디 13안드로이드스터디 13
안드로이드스터디 13jangpd007
 
안드로이드스터디 12
안드로이드스터디 12안드로이드스터디 12
안드로이드스터디 12jangpd007
 
안드로이드스터디 10
안드로이드스터디 10안드로이드스터디 10
안드로이드스터디 10jangpd007
 
안드로이드스터디 9
안드로이드스터디 9안드로이드스터디 9
안드로이드스터디 9jangpd007
 
안드로이드스터디 8
안드로이드스터디 8안드로이드스터디 8
안드로이드스터디 8jangpd007
 
안드로이드스터디 6
안드로이드스터디 6안드로이드스터디 6
안드로이드스터디 6jangpd007
 
안드로이드스터디 5
안드로이드스터디 5안드로이드스터디 5
안드로이드스터디 5jangpd007
 
안드로이드스터디 3
안드로이드스터디 3안드로이드스터디 3
안드로이드스터디 3jangpd007
 
안드로이드스터디 2
안드로이드스터디 2안드로이드스터디 2
안드로이드스터디 2jangpd007
 
안드로이드스터디 1
안드로이드스터디 1안드로이드스터디 1
안드로이드스터디 1jangpd007
 

More from jangpd007 (17)

자바스터디 4
자바스터디 4자바스터디 4
자바스터디 4
 
자바스터디 3 3
자바스터디 3 3자바스터디 3 3
자바스터디 3 3
 
자바스터디 3 2
자바스터디 3 2자바스터디 3 2
자바스터디 3 2
 
자바스터디 3 1
자바스터디 3 1자바스터디 3 1
자바스터디 3 1
 
자바스터디 2
자바스터디 2자바스터디 2
자바스터디 2
 
자바스터디 1
자바스터디 1자바스터디 1
자바스터디 1
 
안드로이드스터디 14
안드로이드스터디 14안드로이드스터디 14
안드로이드스터디 14
 
안드로이드스터디 13
안드로이드스터디 13안드로이드스터디 13
안드로이드스터디 13
 
안드로이드스터디 12
안드로이드스터디 12안드로이드스터디 12
안드로이드스터디 12
 
안드로이드스터디 10
안드로이드스터디 10안드로이드스터디 10
안드로이드스터디 10
 
안드로이드스터디 9
안드로이드스터디 9안드로이드스터디 9
안드로이드스터디 9
 
안드로이드스터디 8
안드로이드스터디 8안드로이드스터디 8
안드로이드스터디 8
 
안드로이드스터디 6
안드로이드스터디 6안드로이드스터디 6
안드로이드스터디 6
 
안드로이드스터디 5
안드로이드스터디 5안드로이드스터디 5
안드로이드스터디 5
 
안드로이드스터디 3
안드로이드스터디 3안드로이드스터디 3
안드로이드스터디 3
 
안드로이드스터디 2
안드로이드스터디 2안드로이드스터디 2
안드로이드스터디 2
 
안드로이드스터디 1
안드로이드스터디 1안드로이드스터디 1
안드로이드스터디 1
 

안드로이드스터디 11

  • 1. 0. 그래픽과 애니메이션 2 안드로이드 플랫폼은 다음 세 종류의 그래픽 애니메이션을 기본적으로 지원한다 . 1. 애니메이티드 GIF(Animated GIF) 이미지 애니메이티드 GIF 애니메이션의 여러 프레임 이미지들은 하나의 GIF 파일을 저장한 것임 . 애니메이티드 GIF 파일을 다른 비트맵 표시물 자원과 마찬가지 방식으로 화면에 표시하면 안드로이드 운영체제가 애니메이션을 수행시켜 줌 . 2. 프레임별 애니메이션 프레임별 애니메이션은 프레임별 이미지들을 개발자가 모두 제공해야 함 . 3. 트위닝 애니메이션 트위닝 애니메이션은 이미지의 위치와 형태를 코드에서 변환함으로써 애니메이션 효과를 냄 .
  • 2. 1. 애니메이션 1-1. 프레임별 애니메이션 프레임별 애니메이션 (frame-by-animation) 은 조금씩 다른 이미지들을 차례로 빠르게 화면에 표시함으로써 사물이 움직이는 듯한 환상을 만들어 내는 것이다 . 페이지를 빠르게 넘기면 그림이 움직이는 효과의 디지털 버전이라고 생각하면 된다 . 애니메이티드 GIF 도 본질적으로는 프레임별 애니메이션에 해당한다 . 이런 프레임별 애니메이션은 코드로 정의하기에는 너무 복잡한 그래픽 변형들에 적합하다 . 애니메이션의 매끄러움은 프레임 이미지들의 수와 그 이미지들의 교체 빠르기에 의해 결정된다 . 지니는 프레임들에서 변하지 않지만 , 선물 상자들은 그 위치가 조금씩 다르다 . 이 지니 파일들을 이용해서 수행하는 코드를 작성해보자 . 애니메이션의 조작을 위해서 사용할 패키지 – android.graphics.drawable.AnimationDrawable;; 1. 애니메이션이 계속해서 반복되도록 해주는 객체명 .setOneShot() 메소드 (true – 한번만 / false – 반복 ) 2. 애니메이션을 시작하게 해주는 객체명 .start() 메소드 3. 애니메이션을 멈추게 하는 객체명 .stop() 메소드 프레임 애니메이션 구현방법 (1) AnimationDrawable 과 ImageView 위젯을 이용해서 애니메이션을 수행 (2) ImageSwitcher 위젯에 프레임 이미지들을 비트맵 자원으로서 추가하고 코드에서 타이머를 이용해 애니메이션 효과를 얻을 수 있음 .
  • 3. 1. 애니메이션 1-1. 프레임별 애니메이션 ( 실습 1)
  • 4. 1. 애니메이션 1-1. 프레임별 애니메이션 ( 실습 2) ImageSwitcher 위젯에 프레임 이미지들을 비트맵 자원으로서 추가하고 코드에서 타이머를 이용해 애니메이션 효과를 얻을 수 있음 . 참고코드를 타이핑 하기 보단 붙여넣기로 수행해 봅시다 .
  • 5.
  • 6. 1. 애니메이션 1-2. 트위닝 애니메이션 ( 개념 ) 자원 파일에 정의 된 애니메이션을 코드에서 불러올 때에는 보조 클래스 AnimationUtils 를 사용한다 . 다음은 animationResourceID 에서 불러온 애니메이션을 green_rect 을 표시하는 ImageViewForTweening 에 적용하는 예이다 . 응용 프로그램이 애니메이션의 시작이나 종료 , 반복 같은 애니메이션 사건들에 반응하도록 만들 수도 있다 . 그러기 위해선 s AnimationListener 인터페이스의 적절한 콜백 메서드들을 구현해야 한다 .
  • 7. 1. 애니메이션 1-2. 트위닝 애니메이션 ( 이론 ) - 1. AlphaAnimation( 투명도 변경 ) 알파 변환을 이용해서 애니메이션 투명도를 바꿀 수 있다 . 알파 변환은 대상을 서서히 보이게 보이지 않게 하거나 페이드인 / 페이드 아웃 여러 객체들을 화면에 겹치고자 할 때 유용하다 . 알파 값은 0.0( 완전 투명 – 안보임 ) ~ 1.0( 완전 불투명 – 보임 ) 지정 가능하다 . 알파 애니메이션의 주요 속성으로는 시작 투명도 fromAlpha 와 종료 투명도 toAlpha 가 있다 . 다음은 대상을 5 초간 “페이드 인” 하는 ( 완전 투명에서 완전 불투명으로 ) 투명도 변경 애니메이션을 정의하는 XML 자원 파일 . <alpha android:fromAlpha=“0.0” android:toAlpha=“1.0” android:duration=“5000”> </alpha> 코드에서는 android.view.animation 패키지의 AlphaAnimation 클래스를 이용해서 이와 동일한 애니메이션을 만들 수 있다 .
  • 8. 1. 애니메이션 1-2. 트위닝 애니메이션 ( 실습 1) - 1. AlphaAnimation( 투명도 변경 -1) /drawable/green_rect.xml /anim/transparency.xml ① ② ③
  • 9. 1. 애니메이션 1-2. 트위닝 애니메이션 ( 실습 1) - 1. AlphaAnimation( 투명도 변경 -2) ① ②
  • 10. 1. 애니메이션 1-2. 트위닝 애니메이션 ( 이론 ) - 2. Scale Animation( 비례 변경 ) 비례 변환은 대상을 수직이나 수평으로 늘리거나 줄이는 것 . 비례 변환의 정도는 대상의 원래 길이 ( 너비 혹은 높이 ) 에 대한 비율로 설정 1.0 은 100%, 0.5 는 50% 를 의미 수평과 수직 비율을 각각 다르게 설정하는 것이 가능하며 , 대상의 종횡 비를 유지하려면 같게 설정해줘야 한다 . 설정해줘야 할 속성은 총 4 가지이며 , 비례변환에서도 변환의 중심축 x, y 를 설정할 수 있다 . 애니메이션 시작 비율 (fromXScale, fromYScale) 애니메이션 종료 비율 (toXScale, toYScale) 다음은 대상의 중심을 축으로 해서 5 초간 대상의 크기를 두배로 늘리는 비례 변환 애니메이션을 정의하는 XML 부분이다 . <scale android:pivotX=“50%” android:pivotY=“50%” android:fromXScale=“1.0” android:fromYScale=“1.0” android:toXScale=“2.0” android:toYScale=“2.0” android:duration=“5000” /> 코드에서는 android.view.animation 패키지의 ScaleAnimation 클래스를 이용해서 이와 동일한 애니메이션을 만들 수 있음 .
  • 11. 1. 애니메이션 1-2. 트위닝 애니메이션 ( 실습 1) - 2. Scale Animation( 비례 변경 ) ① ③ ② /anim/grow.xml ④
  • 12. 1. 애니메이션 1-2. 트위닝 애니메이션 ( 이론 ) - 3. Translate( 이동 ) 이동 변환은 말 그대로 대상을 이동하는 것임 . 이동 변환을 위해서는 대상의 위치 변화를 정의하여야 한다 . 구체적으로 대상의 현재 위치에 상대적인 시작 위치와 현재 위치 에서 상대적인 목표 위치를 지정해야 한다 . 상대적인 시작 위치 (fromXDelta, fromYDelta) 상대적인 목표 위치 (toXDelta, toYDelta) 다음은 5 초간 대상을 Y 축을 따라 위쪽으로 ( 음의 방향 ) 100 픽셀 이동하는 변환을 정의한 XML 부분임 . fillAfter 를 true 로 설정하면 대상이 다시 원래의 위치로 돌아오지 않는다 . <translate android:toYDelta=“-100” android:fillAfter=“true” android:duration=“2500” /> 코드에서는 android.view.animation 패키지의 TranslateAnimation 클래스를 이용해서 이와 동일한 애니메이션을 만들 수 있다 .
  • 13. 1. 애니메이션 1-2. 트위닝 애니메이션 ( 실습 1) - Translate( 이동 ) ① ③ ② /anim/translate_position.xml ③ ④
  • 14. 1. 애니메이션 1-2. 트위닝 애니메이션 ( 이론 ) - 4. Rotate Animation( 회 전 ) 회전 변환은 한 점을 중심으로 대상을 시계 방향 또는 반 시계 방향으로 돌리는 것이다 . 회전의 주요 속성은 시작 각도 fromDegrees 와 종료 각도 toDegrees 이다 . 회전 방향은 이 각도에 의해 암묵적으로 결정된다 . 예를 들어 대상 객체를 한 바퀴 돌린다고 할 때 , fromDegrees 를 0 도로 , toDegrees 를 360 로 설정하면 시계 방향으로 회전 되고 toDegrees 를 -360 로 설정하면 반 시계 방향으로 회전 된다 . 회전 축 ( 회전의 중심 좌표는 기본적으로 (0, 0), 즉 객체의 왼쪽 상단 모서리이다 . 이는 시계 바늘 같은 경우에 적합하다 . 그러나 객체 자신의 중심을 회전축으로 두어야 하는 경우가 더 많으므로 회전 축은 pivotX, pivitY 특성들로 정의 할 수 있다 . 이 특성들은 좌표 값 뿐만 아니라 퍼센트 값 ( 객체의 중심을 지정할 때 편하다 ) 도 허용한다 . 다음은 대상의 중심을 회전 축으로 하여 5 초간 대상을 시게 방향으로 완전히 한 바퀴 돌리는 회전 애니메이션 XML 부분임 . <rotate android:fromDegees=“0” android:toDegrees=“360” android:pivotX=“50%” android:pivotY=“50%” android:duration=“5000” /> 코드에서는 android.view.animation 패키지의 RotateAnimation 클래스를 이용해서 이와 동일한 애니메이션 구현 가능 .
  • 15. 1. 애니메이션 1-2. 트위닝 애니메이션 ( 실습 1) – 4. Rotate Animation( 회전 ) ① ③ ② /anim/sipn.xml ④
  • 16. 1. 애니메이션 1-2. 트위닝 애니메이션 ( 실습 1) – 4. Rotate Animation( 회전 ) ① ③ ② /anim/sipn.xml ④
  • 17.
  • 18. 2. 그래픽 – 비트맵 다루기 심화 기술 Resiezed 객체 크기를 150, 250 에서 500, 500 으로 바꿔봅시다 (1) Matrix ImageView 의 틀을 기준으로 해서 왼쪽 상단을 꼭지점으로 정렬 . 틀보다 작거나 커도 잘라져서 그대로 표현 .
  • 19. 2. 그래픽 – 비트맵 다루기 심화 기술 (2) FIT_XY 원래 이미지 이미지가 ImageView 를 보다 작거나 크든지 간에 이미지를 틀에 맞추는 것
  • 20. 2. 그래픽 – 비트맵 다루기 심화 기술 (3) FIT_START , FIT_CENTER, FIT_END 이미지크기를 틀에 맞게 비율을 줄이되 이미지 시작지점을 ImageView 왼쪽 상단에 맞추어 그림을 표현 Resiezed 객체 크기를 350, 200 으로 바꿔봅시다 (4) FIT_CENTER 이미지크기를 틀에 맞게 비율을 줄이되 ImageView 중앙에 맞추어 표현 (5) FIT_END 이미지크기를 틀에 맞게 비율을 줄이되 ImageView 의 오른쪽 아래에 맞추어 이미지를 표현한다 .
  • 21. 2. 그래픽 – 비트맵 다루기 심화 기술 (6) CENTER 이미지크기 그대로 표현하되 이미지를 틀에 맞게 줄이지는 않는다 . 그리고 ImageView 틀의 중앙에 위치시킨다 . Padding 된 3px 크기의 여유 공간을 넘어가서 그대로 표현됨
  • 22. 2. 그래픽 – 비트맵 다루기 심화 기술 (7) CENTER_CROP 6 번에서의 그림은 높이가 ImageView 의 틀과 맞지 않다 . 이것처럼 한쪽이 틀과 맞지 않다면 틀에 맞게 이미지를 늘이면서 다른 한쪽도 같이 비율에 맞게 증가시킨다 . 그러면 6 번 그림은 높이가 증가한 비율만큼 넓이가 증가하여 표현되기 된다 . 그리고 그림의 위치는 틀의 중앙에서 표현된다 . Top 과 Bottom 의 Padding 된 3px 크기의 여유 공간은 보존된다 .
  • 23. 2. 그래픽 – 비트맵 다루기 심화 기술 (8) CENTER_INSIDE 7 번에서의 내용과 반대로 ImageView 의 틀에 벗어나는 쪽을 맞추어 비율을 줄여 표현한다 . 만약넓이가 틀에서 벗어난다면 넓이를 틀에 맞추고 그 비율만큼 높이를 줄이게 될 것이다 . CENTER_CROP, CENTER_INSIDE 는 ImageView 의 틀에 맞게 이미지를 조정하는 것이 공통적인 특징이다 . Padding 된 3px 크기의 여유 공간은 보존된다 .
  • 24. 1. 애니메이션 1-2. 트위닝 애니메이션 ( 실습 ) – 모든 효과 적용하는 애니메이션 구현