리소스 관련 | mucchin의 Android 전기



Android 애플 리케이션의 애니메이션 리소스가 사용되는 정의 방법


Android 애플 리케이션의 애니메이션 리소스의 사용법은?

Android 애플 리케이션에서 텍스트나 색상 등 리소스로 XML에 정의하고 하는군요.
이와 마찬가지로 애니메이션을 리소스로 정의 할 수 있습니다.


Android 애플 리케이션의 애니메이션 리소스를 추가하는 방법

먼저 애니메이션을 정의하는 XML 파일을 추가하는 단계를 설명합니다.
기본적으로 텍스트와 레이아웃 XML을 추가하는 방법과 동일합니다.
Eclipse에서 XML을 추가하는 방법
그러나 애니메이션을 정의하는 XML을 추가하려면 다음 화면의 빨간 부분의 라디오 버튼 "Animation"을 선택하십시오.
Android 애플 리케이션의 애니메이션 리소스가 사용되는 정의 방법
파일 이름은 어떤 애니메이션인지 알 수있는 적당한 이름으로 OK입니다.
이번에는 testanime.xml와도 둡니다.
그리고 Finish 버튼을 누르면 다음과 같이 Android 프로젝트의 res 폴더 바로 아래에 "anim"라는 폴더가 생성되고 추가 XML을 생성합니다.
Android 애플 리케이션의 애니메이션 리소스가 사용되는 정의 방법
이제 XML 파일 추가가 완료됩니다.


Android 애플 리케이션의 애니메이션 리소스를 정의하는 방법

다음은 애니메이션의 정의입니다.
방금 추가한 XML을 엽니다.
Android의 애니메이션 전용 XML Editor는 것은 현재없는 것, Eclipse에서 연 경우 Eclipse 표준 XML Editor에서 열립니다.

애니메이션을 정의하는 XML 규칙

애니메이션을 정의하는 XML에 대한 몇 가지 규칙이 있습니다.
1. 루트 요소는 하나임을
2. 그 태그는 alpha, scale, translate, rotate, set 중 하나임을
3.XML 파일의 맨 위에있는 "<? xml version ="1.0 "encoding ="utf-8 "?>"는 붙이지 말라 (것). Android의 SDK 문서에 달지 말라적인 설명이 있었다지만,있어도 없어도 동작했습니다. 영어로 설명하기 때문에, "별로 필요 없어"라는 뜻 인지도 모릅니다.
4 루트 요소의 속성에 "xmlns : android ="http://schemas.android.com/apk/res/android ""이 필요 같다. 이것을 지우면 컴파일이 통과하지 못했습니다.

앞서 언급한 alpha, scale, translate, rotate, set의 모든 태그에 공통으로 사용되는 속성에 대한 설명을 먼저해야합니다.
duration : 애니메이션 동작 시간을 밀리초 단위로 설정합니다.
startOffset : 애니메이션의 시작 시간을 밀리초 단위로 설정합니다.
fillBefore : 애니메이션 종료 상태를 애니메이션 적용하기 전에 돌아가려면 true를 지정합니다.
fillAfter : 애니메이션 종료 상태를 그대로하고 싶을 때는 true를 지정합니다.
fillBefore, fillAfter 관해서는 Android 문서 및 기타 사이트에 대한 설명의 의미를 잘 몰랐기 때문에, 실제로 움직여보고, 위와 같은 설명이 타당하다고 생각했습니다.
예를 들어, 점점 사라져가는 것 같은 애니메이션이었다고합니다.
fillBefore을 true로 설정하면 애니메이션이 끝날 때 다시 표시되지만 fillAfter을 true로하면 애니메이션이 종료해도 사라지지 상태로 유지됩니다.

repeatCount : 애니메이션의 반복 횟수를 지정합니다. 무한 반복하는 경우는 -1을 지정합니다.
repeatMode : 애니메이션 반복 모드를 지정합니다. "restart"로, 같은 동작을 반복해 "reverse"에서 이전과 반대로 작동합니다.
zAdjustment : normal, top, bottom 설정 가능하지만, 도대체 무엇이 바뀌는지 잘 모릅니다 · · ·. Z 축 관련 것 때문에 다른 View로 표시가 입은 때의 행동이 변하는 것인 지라고 생각 했습니다만, 생각 차이를 알 수 없습니다.
interpolator : 애니메이션의 변화 정도를 설정합니다.
설정 예는 다음과 같습니다.
@ android : anim / accelerate_interpolator : 점점 빨리.
@ android : anim / accelerate_decelerate_interpolator : 점점 느리게.
그 밖에도 있지만, 그 내용은 Android SDK 문서의 다음 페이지에있는 목록을 사용할 것 같습니다.
docs \ reference \ android \ R.anim.html

그러나, Android의 SDK 문서는 좀 불친절 않을까? 라고 생각하는 것은 나만?




그러면 각 애니메이션에 대해 설명합니다.

alpha

alpha 태그로 정의하면 페이드 애니메이션입니다.
다음 속성을 설정할 수 있습니다.
fromAlpha : 애니메이션 시작의 알파 값을 0.0에서 1.0으로 설정합니다.
toAlpha : 애니메이션 종료시의 알파 값을 0.0에서 1.0으로 설정합니다.
또한 0에 가까울수록 투명합니다.
첫번째 표시는 투명하고 점차 분명하게 표시하는 경우 fromAlpha 0, toAlpha 1로, 반대로 처음에는 명확하게 표시 점차 투명하게하려면 fromAlpha 1, toAlpha을 0으로합니다 .

alpha 애니메이션 설정 예 <br /> 표시 시작은 완전히 표시시킨 상태에서 10 초 안에 완전히 투명하게하는 경우


<alpha xmlns:android="http://schemas.android.com/apk/res/android" android:duration="10000" android:fromAlpha="1.0" android:toAlpha="0.0" />


scale

scale 태그로 정의하면 크기가 바뀌는 애니메이션입니다.
다음 속성을 설정할 수 있습니다.
fromXScale : 애니메이션 시작시 X 방향의 크기입니다. 1.0 원래의 크기를 나타냅니다.
toXScale : 애니메이션 종료시의 X 방향의 크기입니다. 1.0 원래의 크기를 나타냅니다.
fromYScale : 애니메이션 개시시의 Y 방향의 크기입니다. 1.0 원래의 크기를 나타냅니다.
toYScale : 애니메이션 종료시의 Y 방향의 크기입니다. 1.0 원래의 크기를 나타냅니다.
pivotX : X 방향의 변화의 목표가되는 X 좌표
pivotY : Y 방향의 변화의 목표가되는 Y 좌표

pivotX, pivotY 대해 개인적으로 의미있는가라고 생각 표현했습니다.
예를 들어, pivotX를 "0"을 지정하면 이미지의 왼쪽을 향해 조절합니다.
"100 %"로 지정했다면, 이미지의 오른쪽을 향해 조절합니다.
pivotY "0"을 지정하면 이미지의 위쪽을 향해 조절합니다.
"100 %"로 지정했다면, 이미지의 하단쪽으로 조절합니다.
"%"를 붙이면 이미지를 표시하는 View의 상대 좌표를 나타내, "%"를 붙여야 단위를 잘 모르겠지만, 그 View의 영역을 넘어 서라도 향해가는 느낌입니다.

scale 애니메이션 설정 예 <br /> 표시 시작은 100 % 크기로 표시시킨 상태에서 이미지의 왼쪽 가장자리로 축소하면서 10 초 동안 0 %로하는 경우


<scale xmlns : android = "http://schemas.android.com/apk/res/android"android : duration = "10000"android : fromXScale = "1.0"android : toXScale = "0.0"android : fromYScale = "1.0 "android : toYScale ="0.0 "android : pivotX ="0 "android : pivotY ="0 "/>


pivotX, pivotY은 좀 말이 잘 전달되지 않을지도 모르니까, 실제로 시험해보고, 그 Android 애플 리케이션에 적합한 숫자를 지정하면 좋다고 생각합니다.
Android 문서의 설명이 매우 불친절한 것 같은 · · ·.

translate

translate 태그로 정의했을 경우, 수평 방향, 수직 방향으로 움직이는 애니메이션입니다.
설정에 따라 대각선으로 움직일 수도 있습니다.
다음 속성을 설정할 수 있습니다.
fromXDelta : 애니메이션 시작시 X 방향의 위치를 나타냅니다. "-100 %"에서 "100 %"범위에서 지정합니다.
toXDelta : 애니메이션 종료시의 X 방향의 위치를 나타냅니다. "-100 %"에서 "100 %"범위에서 지정합니다.
fromYDelta : 애니메이션 개시시의 Y 방향의 위치를 나타냅니다. "-100 %"에서 "100 %"범위에서 지정합니다.
toYDelta : 애니메이션 종료시의 Y 방향의 위치를 나타냅니다. "-100 %"에서 "100 %"범위에서 지정합니다.

단위는 "%"또는 "% p"를 지정합니다.
"%"는 애니메이션되는 View에서 본 상대 위치 "% p"는 부모의 View에서 본 상대 위치가됩니다.

translate 애니메이션 설정 예 <br /> 화면의 왼쪽에서 오른쪽으로 5 초 동안 걸어 이동, 다음은 오른쪽에서 왼쪽으로, 그 다음은 또한 왼쪽에서 오른쪽으로 움직이는 애니메이션


<translate xmlns : android = "http://schemas.android.com/apk/res/android"android : duration = "5000"android : fromXDelta = "0 % p"android : toXDelta = "100 % p"android : fromYDelta = "0 % p"android : toYDelta = "0 % p"android : repeatMode = "reverse"android : repeatCount = "-1">
</ translate>


rotate

rotate 태그로 정의하면 회전 애니메이션입니다.
다음 속성을 설정할 수 있습니다.
fromDegrees : 애니메이션 개시시의 각도입니다.
toDegrees : 애니메이션 종료시의 각도입니다.
pivotX : 회전의 중심점이되는 X 좌표입니다.
pivotY : 회전의 중심점이되는 Y 좌표입니다.

이 pivotX, pivotY도 말하는 scale과 같은 설정 방법입니다.

rotate 애니메이션 설정 예 <br /> 이미지의 중심 위치를 중심으로 5 초 동안 걸고, 1 회전하고 그 동작을 반복 애니메이션


<rotate xmlns : android = "http://schemas.android.com/apk/res/android"android : duration = "5000"android : fromDegrees = "0"android : toDegrees = "360"android : pivotX = "50 % "android : pivotY ="50 % "android : repeatMode ="restart "android : repeatCount ="-1 ">
</ rotate>


set

set은 위에서 언급한 여러 애니메이션을 결합하는 데 사용합니다.
지금까지 소개한 예제를 모두 구성할 수 있습니다.
예를 들어, 다음을 충족 애니메이션을 봅니다.
· 화상의 중심 위치를 중심으로 1 회전을 * 화면의 왼쪽에서 오른쪽으로 이동한다. (시세 같은 느낌.)
애니메이션 시작은 완전히 투명하고있는 상태에서 서서히 확실하게.
애니메이션 시작에서 종료에 걸고, 서서히 크게.


<set xmlns:android="http://schemas.android.com/apk/res/android">
<rotate android : duration = "5000"android : fromDegrees = "0"android : toDegrees = "360"android : pivotX = "50 %"android : pivotY = "50 %"android : repeatMode = "restart"android : repeatCount = "-1"/>
<translate android : duration = "5000"android : fromXDelta = "0 % p"android : toXDelta = "100 % p"android : fromYDelta = "0 % p"android : toYDelta = "0 % p"android : repeatMode = " restart "android : repeatCount ="-1 "/>
<scale android : duration = "5000"android : fromXScale = "0"android : toXScale = "1"android : fromYScale = "0"android : toYScale = "1"android : pivotX = "0"android : pivotY = "0 "android : repeatMode ="restart "android : repeatCount ="-1 "/>
<alpha android:duration="5000" android:fromAlpha="0" android:toAlpha="1" android:repeatMode="restart" android:repeatCount="-1" />
</ set>


애니메이션을 설정하는 코드

위에서 만든 애니메이션을 실제로 설정하는 코드를 설명합니다.


ImageView image = (ImageView) findViewById (R.id.AnimeImageView);
Animation anime = AnimationUtils.loadAnimation (this, R.anim.testanime);
image.setAnimation (anime);


위의 코드는 미리 준비하고있다 ImageView에 만든 애니메이션을 연결합니다.
두 번째 코드 R.anim.testanime가 만든 애니메이션을 말합니다.
설정하여 애니메이션 정의 Animation의 인스턴스를 만들고 ImageView.setAnimation ()에서 ImageView와 애니메이션을 연결합니다.


상당히 자세히 설명했다고 생각하고 있습니다만, 실제로 만들어 보지 않으면 모르는군요.
일단 적당하게 만들어보세요.
나도이 기사를 쓰기 전까지는 애니메이션의 사용법은별로 이해할 수 없었 습니다만,이 기사를 쓰면서 연구하고있는 사이에, 대략 알게되었습니다.

2 3 4 Page 1 of 4 1 2 3 4