* 안드로이드 애니메이션 효과 및 기능
안녕하세요 송군함대입니다~!^-^/
이번 포스팅은 안드로이드에서 사용되는 애니매이션 효과를 사용하는 방법을 알아볼까 합니다~!
어려울 거라 생각했지만, 막상 구현해보니 그리 어렵지는 않더라구요~!
다같이 어떤 기능들이 있으며, 간단한 예제를 통해 구현해보도록 해보아요~!
* 애니메이션 효과
: 안드로이드는 뷰의 간단한 변형을 줄 수 있는 애니메이션 처리를 지원한다. 이는 레이아웃 애니메이션과 각 구성요소의 애니메이션으로 나눌 수 있다.
* 애니메이션 종류
: 종류는 아래와 같으며, () 는 클래스명으로 android.view.animation.Animation 의 하위 클래스이다. Animation 객체를 상속받아 애니메이션 효과를 구현할 수 있다.
- 투명도 변환(AlphaAnimation)
- 회전(RatateAnimation)
- 크기 변환(ScaleAnimation)
- 위치 이동(TranslateAnimate)
* 애니메이션 정의(xml)
: 애니메이션 기능을 xml로 정의하여, 해당 xml 을 호출하여 애니메이션 기능을 구현할 수 있다.
xml 파일은 프로젝트 내의 res/anim/ 폴더 내에 정의되어야 한다.
* 애니메이션 종류별 속성
종류 |
속성값 |
내용 |
alpha(투명도) |
fromAlpha toAlpha ... |
fromAlpha -> toAlpha 투명도를 변경 ex) fromAlpha="1.0" / toAlpha="0.0" (점점 투명해짐) fromAlpha="0.0" / fromAlpha="1.0" (점점 나타남) |
scale(크기) |
fromXScale toXScale fromYScale toYScale pivotX pivotY fillAfter fillBefore ... |
fromXScale -> toXScale 좌우 크기 변경 fromYScale -> toYScale 상하 크기 변경 ex) fromXScale="1.0" / toXScale="1.4" / fromYScale="1.0" / toYScale="1.4" (1.0 -> 1.4 상하좌우 크기 변경) |
rotate(회전) |
fromDegrees toDegrees toYScale pivotX pivotY startOffset ... |
fromDegrees -> toDegrees 각도 회전 ex) fromDegrees="90" / toDegrees="0" (90도 -> 0도 회전) fromDegrees="0" / toDegrees="90" (0도 -> 90도 회전) |
translate(이동) |
toXDelta toYDelta ... |
fromXDelta -> toXDelta 좌우로 이동 fromYDelta -> toYDelta 상하로 이동 ex) fromXDelta="100%p" / toXDelta="0" (좌->우 이동) fromYDelta="100%p" / toYDelta="0" (상->하 이동) |
* 애니메이션 구현 방법
1. xml 파일을 이용한 구현(/res/anim/)
1) 먼저 애니메이션을 구현할 xml 파일을 생성한다.
예문) /res/anim/alpha_ani.xml 파일 생성 => 투명도 효과를 사용하는 alpha 를 선언 <?xml version="1.0" encoding="utf-8"?> |
2) Animation 객체를 선언하고 AnimationUtils.loadAnimation() 함수를 통해 위의 xml 파일을 할당해준다.
예문) Animation alphaAni 선언 및 위의 xml 파일을 할당 => 투명도 효과를 사용하는 alpha Animation 선언 private Animation alphaAni; alphaAni = AnimationUtils.loadAnimation(this, R.anim.alpha_ani); |
3) Animation 효과를 적용할 객체에 startAnimaion() 함수를 통해 기능을 부여한다.
예문) 이미지뷰를 선언하고 해당 이미지뷰에 Animation 효과를 할당 private ImageView imgLava; imgLava.startAnimation(alphaAni); |
2. 소스 코드를 이용한 구현
1) 사용할 애니메이션 객체를 선언한다.
예문) 투명도 효과인 AlphaAnimation 객체 선언 Animation ani01 = new AlphaAnimation(0.0f, 1.0f); ani01.setDuration(5000); |
2) 애니메이션 효과를 적용할 객체에 setAnimation() 함수를 통해 기능을 부여한다.
예문) 이미지뷰를 선언하고 이미지 효과 부여 ImageView imgLava = (ImageView) findViewById(R.id.imgLava); imgLava.setAnimation(ani01); |
3. 여러 개의 애니메이션 효과 구현
: 애니메이션 효과를 구현할 때 한가지만이 아닌 여러 개의 애니메이션 효과를 주고 싶을 경우가 있을 것이다. 이때 사용하는 방법으로 set 을 이용한 방법이 있다. 해당 방법도 xml 파일과 소스 코드에서 모두 구현이 가능하다.
1) xml 파일 이용
: xml파일을 이용할 경우 <set></set> 태그를 통해 공통의 설정값은 set 태그 내에 넣고 애니메이션 테그를 세부 탭으로 넣어 사용할 수 있다. 아래 예문을 통해 확인해보면 그리 어렵지 않게 구현이 가능한 것을 확인할 수 있다.
예문) 회전과 크기 변경의 애니메이션 효과를 동시에 사용 <?xml version="1.0" encoding="utf-8"?> |
2) 소스 코드를 이용
: 소스의 경우에도 마찬가지로 AnimationSet 객체를 선언하고 사용할 애니메이션을 선언하여 addAnimation() 함수를 통해 여러 애니메이션을 적용할 수 있다. 말로 설명하는 것은 어려워 보이니 아래 예문을 통해 쉽게 알아보도록 하자~!
예문) AlphaAnimation 과 RotateAnimation 효과를 일괄 적용 ImageView imgLava = (ImageView) findViewById(R.id.imgLava);
AnimationSet set = new AnimationSet(true);
Animation ani01 = new AlphaAnimation(0.0f, 1.0f);
Animation ani02 = new RotateAnimation(0, 90);
set.addAnimation(ani01); imgLava.setAnimation(set); |
'개발 관련 지식 > 안드로이드(Android)' 카테고리의 다른 글
[안드로이드] 자신의 폰번호 확인 방법 (0) | 2014.11.10 |
---|---|
[안드로이드] 액티비티(Activity)가 아닌 곳에서 Intent 호출 방법 (0) | 2014.11.10 |
[안드로이드] 전면 카메라 사용 예제 (1) | 2014.10.17 |
[안드로이드] 카메라 이용을 위한 SurfaceView (2) | 2014.10.14 |
[안드로이드] GCM 서버 JSON 파라미터 정보 (1) | 2014.08.14 |