* 애니메이션 효과
: 안드로이드는 뷰의 간단한 변형을 줄 수 있는 애니메이션 처리를 지원한다. 이는 레이아웃 애니메이션과 각 구성요소의 애니메이션으로 나눌 수 있다.
* 애니메이션 종류
: 종류는 아래와 같으며, () 는 클래스명으로 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); |
'IT_Programming > Android_Java' 카테고리의 다른 글
안드로이드 KitKat(4.4) 버젼에서 웹뷰를 통한 자바스크립트 함수 실행 혹은 loadUrl시 동작하지 않는 문제 해결 (0) | 2014.11.04 |
---|---|
[펌_Android] Intent 로 받은 목록을 커스텀하기! (0) | 2014.11.03 |
[펌] Storage Access Framework을 통한 이미지 가져오기 (0) | 2014.11.01 |
[펌] kitkat(4.4)에서 맞닥뜨린 이슈 및 해결 (0) | 2014.11.01 |
Lollipop (LOS) 부터는 Notification Icon 에 색상을 넣을 수 없다? (0) | 2014.10.18 |