▶ Animation
실행 화면





















Fade In : 실행시 서서히 어두워지면서 사라진후  실행된다 
       


Zoom In : 화면이 가운데를 기준으로 어두워 지면서 사라진 후 실행된다.
      


소스 위치 : src/com/example/android/apis/app/Animation.java

Animation Class와 매치되는 XML은 activity_animation.xml
setContentView(R.layout.activity_animation);
 
Button 2개 설정 fade_animation, zoom_animation
Button button = (Button)findViewById(R.id.fade_animation);
button.setOnClickListener(mFadeListener);
button = (Button)findViewById(R.id.zoom_animation);
button.setOnClickListener(mZoomListener);

Fade Button Listener 함수
: Fade Button을 누르면 현재 화면에서 Controls1 Activity 화면으로 변화를 준다.

    private OnClickListener mFadeListener = new OnClickListener() {
        public void onClick(View v) {            
            startActivity(new Intent(Animation.this, Controls1.class));            
            overridePendingTransition(R.anim.fade, R.anim.hold);
        }
    };


overridePendingTransition() 함수에 의해 Activity 화면 전환 효과를 줄수 있다.
void overridePendingTransition(int enterAnim, int exitAnim)
 : startActivity(intent)또는 finish()의 호출 즉시 지정된 에니메이션으로 실행
 Call immediately after one of the flavors of startActivity(Intent) or finish() to specify an explicit transition animation to perform next.


Zoom Button Listener 함수
: Zoom Button을 누르면 현재 화면에서 Controls1 Activity 화면으로 변화를 준다.
    private OnClickListener mZoomListener = new OnClickListener() {
        public void onClick(View v) {
            startActivity(new Intent(Animation.this, Controls1.class));
            overridePendingTransition(R.anim.zoom_enter, R.anim.zoom_exit);
        }
    };



▦ anim.fade Animation 파일 내용
맨 처음 투명했다가 나중엔 불투명하게 변경된다.
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
       android:interpolator="@android:anim/accelerate_interpolator"
       android:fromAlpha="0.0" android:toAlpha="1.0"
       android:duration="@android:integer/config_longAnimTime" />

alpha Animation은 투명도 변환을 처리하며, AlphaAnimation 클래스에 대응한다

android:interpolator 태그 속성
 : 시간의 흐름에 따라 효과의 속도가 어떻게 달라지는지 설정하기 위한 interpolator(덧붙이다, 채우다, 보간한다)
사용하기 위해 '
android:anim/interpolationName'에 있는 것을 참조한다.


android:fromAlpha  태그 속성
 : animation 시작시 투명도 (0에서 1사이의 부동소수점, 0.0이 투명, 1.0이 완전 불 투명)


android:toAlpha  태그 속성
 : animation 완료시 투명도 (0에서 1사이의 부동소수점, 0.0이 투명, 1.0이 완전 불 투명)


android:duration   태그 속성
 : Animnation이 시작돼서 끝나는 시간을 밀리 초(1/1000초) 단위로 설정
 @android:integer/config_longAnimTime 은 긴 시간을 표시함 (그외 config_mediumAnimTime, config_shortAnimTime)


▦ anim.hold Animation 파일 내용
에니메이션이 끝날때까지 X좌표가 0인 지점에 위치한다(변동없이 고정)

<translate xmlns:android="http://schemas.android.com/apk/res/android"
       android:interpolator="@android:anim/accelerate_interpolator"
       android:fromXDelta="0" android:toXDelta="0"
       android:duration="@android:integer/config_longAnimTime" />

translate Animation상하좌우 이동 animation을 지정하며. TranslateAnimation 클래스에 대응한다.

android:fromXDelta 태그 속성
: animation이 시작하는 X좌표


android:toXDelta 태그 속성
: animation이 끝나는 X좌표


android:fromYDelta 태그 속성
: animation이 시작하는 Y좌표

android:toYDelta 태그 속성
: animation이 끝나는 Y좌표


위의 태그속성들에서 사용되는 값은 절대값을 나타내는 float값과 자기 자신을 기준으로 한 위치에 대한 비율을 나타내는 -100%~ 100%값, 부모 컨테이너를 기준으로 한 위치에 대한 비율을 나타내는 -100%p ~ 100%p값을 사용한다.

▦ anim.zoom_enter Animation 파일 내용
화면의 중심을 기준으로 X(Width)와 Y(Height)의 크기가 두배로 커졌다가 작아지는 에니메이션 동작

<set xmlns:android="http://schemas.android.com/apk/res/android"
        android:interpolator="@android:anim/decelerate_interpolator">
    <scale android:fromXScale="2.0" android:toXScale="1.0"
           android:fromYScale="2.0" android:toYScale="1.0"
           android:pivotX="50%p" android:pivotY="50%p"
           android:duration="@android:integer/config_mediumAnimTime" />
</set>

Set 태그를 사용을 하면 두가지 이상의 animation 조합 또는 각각 에니메이션에서 공통으로 적용할 내용을 지정할 수 있다. (하지만 위의 예제에서는 scale 한가지만 사용함)

scale Animation은 크기 변환 조절을 지정 하며, ScaleAnimation 클래스에 대응한다.
고정된 지점을 중심으로 크기 변환 조절

android:fromXScale 태그 속성
: animation이 시작하는 X 크기


android:toXScale 태그 속성
: animation이 끝나는 X 크기

android:fromYScale 태그 속성
: animation이 시작하는 Y 크기

android:toYDelta 태그 속성
: animation이 끝나는 Y 크기

android:pivotX 태그 속성
: 고정된 중심 좌표 X


android:pivotY 태그 속성
: 고정된 중심 좌표 Y


▦ anim.zoom_exit Animation 파일 내용
화면의 중심을 기준으로 X(Width)와 Y(Height)의 크기가 기본 크기에서 절반으로 작아지면서, 불투명했다가 투명해지는 에니메이션 동작
(동작이 빨리 이뤄진다)
<set xmlns:android="http://schemas.android.com/apk/res/android"
        android:interpolator="@android:anim/decelerate_interpolator"
        android:zAdjustment="top">
    <scale android:fromXScale="1.0" android:toXScale=".5"
           android:fromYScale="1.0" android:toYScale=".5"
           android:pivotX="50%p" android:pivotY="50%p"
           android:duration="@android:integer/config_mediumAnimTime" />
    <alpha android:fromAlpha="1.0" android:toAlpha="0"
            android:duration="@android:integer/config_mediumAnimTime"/>
</set>


android:zAdjustment 태그 속성
: 에니메이션이 수행될때 z축 중심으로 정렬함 (normal, top, bottom)



신고

'Android > ApiDemos' 카테고리의 다른 글

App - Activity - Dialog  (0) 2010.03.17
App - Activity - Custom Title  (0) 2010.03.17
App - Activity - Custom Dialog  (0) 2010.03.17
App - Activity - Animation  (0) 2010.03.17
App Demos - App (1/10) Activity  (0) 2010.03.16
API Demos  (0) 2010.03.16
Posted by 까칠코더.


티스토리 툴바