View 애니메이션 및 Drawable 애니메이션
View 애니메이션
뷰 애니메이션 시스템을 사용하여 Views의 모션 트윈을 실행할 수 있습니다.모션 트윈은 시작점, 끝점, 크기, 회전, 애니메이션과 같은 일반적인 aspects 정보를 사용하여 모션을 계산합니다.
모션 트윈은 뷰 객체의 컨텐트에서 간단한 변환(위치, 크기, 회전, 투명도)을 수행할 수 있습니다.따라서, 만약 TextView 대상이 있다면, 이동, 회전, 확대, 또는 텍스트를 수축할 수 있습니다.만약 배경 그림이 있다면, 배경 그림은 문자에 따라 바뀔 것입니다.animation 패키지는 모션 트윈에 사용되는 모든 클래스를 제공합니다.
일련의 애니메이션 명령은 XML 또는 Android 코드로 정의된 모션 트윈을 정의합니다.layout을 정의하는 데는 하드코딩 애니메이션보다 읽을 수 있고, 다시 사용할 수 있고, 교환할 수 있기 때문에 XML 파일로 정의하는 것을 권장합니다.다음 예에서는 XML을 사용합니다.(응용 코드에서 XML이 아닌 애니메이션을 정의하는 방법을 더 배우려면AnimationSet 클래스와 다른Animation 하위 클래스를 참조하십시오.)
애니메이션 명령은 당신이 실행하고자 하는 변환, 언제 변환을 실행하고, 얼마나 오래 실행해야 하는지를 정의합니다.변환은 직렬로 하거나 병렬로 할 수 있다. 예를 들어, TextView의 내용을 왼쪽에서 오른쪽으로 이동시킨 다음 180도 회전시키거나, 문자의 이동과 회전을 병행으로 실행할 수 있다.모든 변환은 변환에 특정한 매개 변수(크기 변환의 시작 크기와 끝 크기, 회전의 시작 각도와 끝 각도 등)와 일련의 일반적인 매개 변수(예를 들어 사실 시간과 지속 시간)를 필요로 한다.여러 개의 변환을 동시에 실행하려면 같은 시작 시간을 제공한다.그것들을 직렬로 실행하려면 시작 시간을 계산할 때 이전 변환의 지속 시간을 추가합니다.
애니메이션 XML 파일은 안드로이드 프로젝트의res/anim/디렉터리에 있어야 합니다.파일에는 단독 루트 요소가 있어야 합니다. 이것은 단독 , , , ,interpolator 요소일 수도 있고, 이 요소 그룹을 가진 요소일 수도 있습니다. (그 중에는 다른 를 포함할 수도 있습니다.)기본적으로 모든 애니메이션 명령은 동시에 적용됩니다.그것들의 직렬을 발생시키려면, 아래의 예시에서 보듯이 startOffset 속성을 실행해야 합니다.
다음은 ApiDemos에서 나온 XML로 뻗은 다음 동시에 회전한 다음 View 대상을 회전합니다.<set android:shareInterpolator="false">
<scale
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="1.0"
android:toXScale="1.4"
android:fromYScale="1.0"
android:toYScale="0.6"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="false"
android:duration="700" />
<set android:interpolator="@android:anim/decelerate_interpolator">
<scale
android:fromXScale="1.4"
android:toXScale="0.0"
android:fromYScale="0.6"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:startOffset="700"
android:duration="400"
android:fillBefore="false" />
<rotate
android:fromDegrees="0"
android:toDegrees="-45"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:startOffset="700"
android:duration="400" />
</set>
</set>
화면 좌표계 (이 예에 사용되지 않음) 는 (0, 0) 왼쪽 상단에 있고, 아래와 오른쪽 좌표가 점점 커진다.
pivotX와 같은 일부 값은 대상 자체나 부모 대상에 비해 지정할 수 있습니다.원하는 효과에 적당한 형식을 사용해야 한다. ('50' 은 부모의 50%에 비해, '50%' 는 그 자체에 비해 50%).
Interpolator를 할당하여 시간에 따라 변환을 적용하는 방법을 결정할 수 있습니다.Android는 다양한 속도 곡선을 지정하는 Interpolator 하위 클래스를 포함합니다. 예를 들어 Accelerate Interpolator는 전환이 시작할 때 느리고 가속됨을 표시합니다.각 속성에는 XML에 적용할 수 있는 값이 있습니다.
이 XML을hyperspace라고 명명함으로써jump.xml은 프로젝트의res/anim/디렉터리에 저장되며, 다음 코드는layout의 ImageView에 인용하여 적용할 수 있습니다.ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage);
Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
spaceshipImage.startAnimation(hyperspaceJumpAnimation);
start Animation () 의 대체 방법 중 하나입니다. Animation을 통해 대체할 수 있습니다.setStartTime()은 애니메이션의 시작 시간을 정의하고 View를 통과합니다.setAnimation()은 애니메이션을 View에 지정합니다.
XML 구문, 사용 가능한 tags 및 속성에 대한 자세한 내용은 Animation Resources 를 참조하십시오.
주의: 애니메이션을 어떻게 움직이든지 크기를 바꾸든지 간에, 애니메이션을 가진 View의 경계는 자동으로 조정되지 않습니다.심지어 애니메이션은 뷰 범위를 벗어나도 자르지 않고 그려집니다.그러나 애니메이션이 모 뷰의 경계를 벗어나면 잘립니다.
Drawable 애니메이션
Drawable 애니메이션은 일련의 Drawable 자원을 하나하나 불러와서 애니메이션을 만들 수 있습니다.엄밀히 말하면 이것은 전통적인 애니메이션으로 일련의 다른 그림으로 만들어진 다음에 순서대로 재생된다. 마치 한 권의 영화와 같다.AnimationDrawable 클래스는 Drawable 애니메이션의 기본입니다.
AnimationDrawable을 사용하여 코드에 애니메이션의 프레임을 정의할 수 있지만, 애니메이션을 구성하는 프레임을 단독으로 열거한 XML 파일을 통해 더욱 간단하게 완성할 수 있습니다.이 애니메이션의 XML 파일은 안드로이드 프로젝트의res/drawable/디렉터리에 있어야 합니다.이 경우 명령은 애니메이션 각 프레임의 순서와 지속 시간입니다.
XML 파일은 를 루트 노드로 하고 각 프레임의 하위 - 노드로 구성되어 있습니다: 프레임의drawable 자원과 프레임의 지속 시간입니다.다음은 Drawable 애니메이션의 예제 XML 파일입니다.
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="true">
<item android:drawable="@drawable/rocket_thrust1" android:duration="200" />
<item android:drawable="@drawable/rocket_thrust2" android:duration="200" />
<item android:drawable="@drawable/rocket_thrust3" android:duration="200" />
</animation-list>
이 애니메이션은 세 프레임만 실행되었다.list의android:oneshot 속성을true로 설정하면 한 번만 순환하고 마지막 프레임에 머무르며 그 상태를 유지합니다.false로 설정된 경우 애니메이션이 반복됩니다.이 XML을 rocket으로 명명함으로써thrust.xml을 프로젝트의res/drawable/디렉터리에 저장하면background 그림 형식으로 뷰에 추가한 다음play를 호출할 수 있습니다.다음 예제에서는 ImageView 중 하나에 애니메이션을 추가한 다음 화면이 터치될 때 실행하는 Activity 를 보여 줍니다.AnimationDrawable rocketAnimation;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image);
rocketImage.setBackgroundResource(R.drawable.rocket_thrust);
rocketAnimation = (AnimationDrawable) rocketImage.getBackground();
}
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
rocketAnimation.start();
return true;
}
return super.onTouchEvent(event);
}
그런 원샷 애니메이션의 경우 애니메이션 실행이 끝난 후에 start () 방법을 다시 호출하면 애니메이션이 다시 실행되지 않고 stop () 방법을 먼저 호출하고 start () 방법을 호출해야 애니메이션의 실행을 다시 시작할 수 있다. 아래 코드와 같다. @Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
rocketAnimation.stop();
rocketAnimation.start();
return true;
}
return super.onTouchEvent(event);
}
주의해야 할 가장 중요한 것은 AnimationDrawable의 start () 방법을 AnimationDrawable () 방법에서 호출할 수 없다는 것입니다. 왜냐하면 AnimationDrawable가 window에 완전히 첨부되지 않았기 때문입니다.애니메이션을 바로 재생하고 상호작용이 필요하지 않으면, Activity의 onWindow Focus Changed () 방법에서 애니메이션을 호출할 수 있습니다. 이 방법은 안드로이드에서 window가focus를 얻을 때 조정됩니다.
XML 구문, 사용 가능한 tags 및 속성에 대한 자세한 내용은 Animation Resources 를 참조하십시오.
번역:
http://developer.android.com/guide/topics/graphics/view-animation.html,http://developer.android.com/guide/topics/graphics/drawable-animation.html
Done.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
다음은 ApiDemos에서 나온 XML로 뻗은 다음 동시에 회전한 다음 View 대상을 회전합니다.
<set android:shareInterpolator="false">
<scale
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="1.0"
android:toXScale="1.4"
android:fromYScale="1.0"
android:toYScale="0.6"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="false"
android:duration="700" />
<set android:interpolator="@android:anim/decelerate_interpolator">
<scale
android:fromXScale="1.4"
android:toXScale="0.0"
android:fromYScale="0.6"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:startOffset="700"
android:duration="400"
android:fillBefore="false" />
<rotate
android:fromDegrees="0"
android:toDegrees="-45"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:startOffset="700"
android:duration="400" />
</set>
</set>
화면 좌표계 (이 예에 사용되지 않음) 는 (0, 0) 왼쪽 상단에 있고, 아래와 오른쪽 좌표가 점점 커진다.
pivotX와 같은 일부 값은 대상 자체나 부모 대상에 비해 지정할 수 있습니다.원하는 효과에 적당한 형식을 사용해야 한다. ('50' 은 부모의 50%에 비해, '50%' 는 그 자체에 비해 50%).
Interpolator를 할당하여 시간에 따라 변환을 적용하는 방법을 결정할 수 있습니다.Android는 다양한 속도 곡선을 지정하는 Interpolator 하위 클래스를 포함합니다. 예를 들어 Accelerate Interpolator는 전환이 시작할 때 느리고 가속됨을 표시합니다.각 속성에는 XML에 적용할 수 있는 값이 있습니다.
이 XML을hyperspace라고 명명함으로써jump.xml은 프로젝트의res/anim/디렉터리에 저장되며, 다음 코드는layout의 ImageView에 인용하여 적용할 수 있습니다.
ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage);
Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
spaceshipImage.startAnimation(hyperspaceJumpAnimation);
start Animation () 의 대체 방법 중 하나입니다. Animation을 통해 대체할 수 있습니다.setStartTime()은 애니메이션의 시작 시간을 정의하고 View를 통과합니다.setAnimation()은 애니메이션을 View에 지정합니다.
XML 구문, 사용 가능한 tags 및 속성에 대한 자세한 내용은 Animation Resources 를 참조하십시오.
주의: 애니메이션을 어떻게 움직이든지 크기를 바꾸든지 간에, 애니메이션을 가진 View의 경계는 자동으로 조정되지 않습니다.심지어 애니메이션은 뷰 범위를 벗어나도 자르지 않고 그려집니다.그러나 애니메이션이 모 뷰의 경계를 벗어나면 잘립니다.
Drawable 애니메이션
Drawable 애니메이션은 일련의 Drawable 자원을 하나하나 불러와서 애니메이션을 만들 수 있습니다.엄밀히 말하면 이것은 전통적인 애니메이션으로 일련의 다른 그림으로 만들어진 다음에 순서대로 재생된다. 마치 한 권의 영화와 같다.AnimationDrawable 클래스는 Drawable 애니메이션의 기본입니다.
AnimationDrawable을 사용하여 코드에 애니메이션의 프레임을 정의할 수 있지만, 애니메이션을 구성하는 프레임을 단독으로 열거한 XML 파일을 통해 더욱 간단하게 완성할 수 있습니다.이 애니메이션의 XML 파일은 안드로이드 프로젝트의res/drawable/디렉터리에 있어야 합니다.이 경우 명령은 애니메이션 각 프레임의 순서와 지속 시간입니다.
XML 파일은 를 루트 노드로 하고 각 프레임의 하위 - 노드로 구성되어 있습니다: 프레임의drawable 자원과 프레임의 지속 시간입니다.다음은 Drawable 애니메이션의 예제 XML 파일입니다.
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="true">
<item android:drawable="@drawable/rocket_thrust1" android:duration="200" />
<item android:drawable="@drawable/rocket_thrust2" android:duration="200" />
<item android:drawable="@drawable/rocket_thrust3" android:duration="200" />
</animation-list>
이 애니메이션은 세 프레임만 실행되었다.list의android:oneshot 속성을true로 설정하면 한 번만 순환하고 마지막 프레임에 머무르며 그 상태를 유지합니다.false로 설정된 경우 애니메이션이 반복됩니다.이 XML을 rocket으로 명명함으로써thrust.xml을 프로젝트의res/drawable/디렉터리에 저장하면background 그림 형식으로 뷰에 추가한 다음play를 호출할 수 있습니다.다음 예제에서는 ImageView 중 하나에 애니메이션을 추가한 다음 화면이 터치될 때 실행하는 Activity 를 보여 줍니다.AnimationDrawable rocketAnimation;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image);
rocketImage.setBackgroundResource(R.drawable.rocket_thrust);
rocketAnimation = (AnimationDrawable) rocketImage.getBackground();
}
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
rocketAnimation.start();
return true;
}
return super.onTouchEvent(event);
}
그런 원샷 애니메이션의 경우 애니메이션 실행이 끝난 후에 start () 방법을 다시 호출하면 애니메이션이 다시 실행되지 않고 stop () 방법을 먼저 호출하고 start () 방법을 호출해야 애니메이션의 실행을 다시 시작할 수 있다. 아래 코드와 같다. @Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
rocketAnimation.stop();
rocketAnimation.start();
return true;
}
return super.onTouchEvent(event);
}
주의해야 할 가장 중요한 것은 AnimationDrawable의 start () 방법을 AnimationDrawable () 방법에서 호출할 수 없다는 것입니다. 왜냐하면 AnimationDrawable가 window에 완전히 첨부되지 않았기 때문입니다.애니메이션을 바로 재생하고 상호작용이 필요하지 않으면, Activity의 onWindow Focus Changed () 방법에서 애니메이션을 호출할 수 있습니다. 이 방법은 안드로이드에서 window가focus를 얻을 때 조정됩니다.
XML 구문, 사용 가능한 tags 및 속성에 대한 자세한 내용은 Animation Resources 를 참조하십시오.
번역:
http://developer.android.com/guide/topics/graphics/view-animation.html,http://developer.android.com/guide/topics/graphics/drawable-animation.html
Done.
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="true">
<item android:drawable="@drawable/rocket_thrust1" android:duration="200" />
<item android:drawable="@drawable/rocket_thrust2" android:duration="200" />
<item android:drawable="@drawable/rocket_thrust3" android:duration="200" />
</animation-list>
이 애니메이션은 세 프레임만 실행되었다.list의android:oneshot 속성을true로 설정하면 한 번만 순환하고 마지막 프레임에 머무르며 그 상태를 유지합니다.false로 설정된 경우 애니메이션이 반복됩니다.이 XML을 rocket으로 명명함으로써thrust.xml을 프로젝트의res/drawable/디렉터리에 저장하면background 그림 형식으로 뷰에 추가한 다음play를 호출할 수 있습니다.다음 예제에서는 ImageView 중 하나에 애니메이션을 추가한 다음 화면이 터치될 때 실행하는 Activity 를 보여 줍니다.
AnimationDrawable rocketAnimation;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image);
rocketImage.setBackgroundResource(R.drawable.rocket_thrust);
rocketAnimation = (AnimationDrawable) rocketImage.getBackground();
}
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
rocketAnimation.start();
return true;
}
return super.onTouchEvent(event);
}
그런 원샷 애니메이션의 경우 애니메이션 실행이 끝난 후에 start () 방법을 다시 호출하면 애니메이션이 다시 실행되지 않고 stop () 방법을 먼저 호출하고 start () 방법을 호출해야 애니메이션의 실행을 다시 시작할 수 있다. 아래 코드와 같다.
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
rocketAnimation.stop();
rocketAnimation.start();
return true;
}
return super.onTouchEvent(event);
}
주의해야 할 가장 중요한 것은 AnimationDrawable의 start () 방법을 AnimationDrawable () 방법에서 호출할 수 없다는 것입니다. 왜냐하면 AnimationDrawable가 window에 완전히 첨부되지 않았기 때문입니다.애니메이션을 바로 재생하고 상호작용이 필요하지 않으면, Activity의 onWindow Focus Changed () 방법에서 애니메이션을 호출할 수 있습니다. 이 방법은 안드로이드에서 window가focus를 얻을 때 조정됩니다.
XML 구문, 사용 가능한 tags 및 속성에 대한 자세한 내용은 Animation Resources 를 참조하십시오.
번역:
http://developer.android.com/guide/topics/graphics/view-animation.html,http://developer.android.com/guide/topics/graphics/drawable-animation.html
Done.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.