본문 바로가기
프로그래밍/안드로이드

안드로이드 애니매이션1 (Animation)

by -현's- 2015. 3. 25.
반응형


●애니매이션(Animation)

- 안드로이드 자체적으로 간단한 에니메이션 효과가 지원된다. 


- 안드로이드에서는 트윈 에니메이션을 지원한다. 일반적인 프레임에니메이션과는 차이가 있다.

 * 프레임 에니메이션 - 여러장의 이미지를 짧은 시간에 보여줘서 움직이는 것처럼 보여줌

 * 트윈 에니메이션- 시작부터 마지막 사이의 에니메이션 효과를 내부적으로 예측 연산하여 보여줌


- 안드로이드에서 제공하는 시스템 애니매이션은 호출만 하면 된다. 대신 종류가 적다. 그래서 개발자가 직접 애니매이션을 제작해야 할 경우 쓰레드(Thread)를 이용해서 제작한다.


- res/anim 안에 애니매이션 효과에 관한 xml파일을 만든 후 이 xml을 위젯에 적용한다.






트윈 에니메이션 예제


- AniActivity.java

package study.system.ani;


import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.animation.Animation;

import android.view.animation.AnimationUtils;

import android.widget.Button;

import android.widget.ImageView;


import com.example.day0321.R;


public class AniActivity extends Activity implements OnClickListener{

Button btn_ani;

ImageView img_ani;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.scale_main);

btn_ani = (Button)findViewById(R.id.btn_ani);

img_ani = (ImageView)findViewById(R.id.img_ani);

btn_ani.setOnClickListener(this);

}


public void onClick(View v) {

Animation ani = AnimationUtils.loadAnimation(this, R.anim.scale);

//레이아웃을 포함한 모든 위젯은 시스템 에니메이션의 대상이 된다.

btn_ani.startAnimation(ani);

img_ani.startAnimation(ani);

}

}




- scale.xml

<?xml version="1.0" encoding="utf-8"?>

<scale

    xmlns:android="http://schemas.android.com/apk/res/android"

    android:fromXScale="1.0"

    android:fromYScale="1.0"

    android:toXScale="5.0"

    android:toYScale="5.0"

    android:pivotX="50%"

    android:pivotY="50%"

    android:duration="5000">

    

</scale>




- scale_main.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"

    android:gravity="center" >

    

    <Button 

        android:id="@+id/btn_ani"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="버튼"/>

    

<ImageView 

   android:id="@+id/img_ani"

   android:layout_width="wrap_content"

   android:layout_height="wrap_content"

   android:src="@drawable/ic_launcher"/>    

    

</LinearLayout>

 











반응형

댓글