Android 개발 애니메이션 구현
Android 개발 애니메이션 구현
/*
* Android 개발 애니메이션 구현
* 북경 안 드 로 이 드 클럽 그룹: 167839253
* Created on: 2011-12-09
* Author: blueeagle
* Email: [email protected]
*/
'안 드 로 이 드 개발 의 PopupWindow' 라 는 글 에서 애니메이션 과 관련 된 내용 이 초보 적 으로 언급 되 었 다.팝 업 대화 상자그 애니메이션 효 과 는 xml 파일 을 이용 하여 설정 할 수 있 습 니 다. 복습 해 보 세 요. 바로 대화 상자 의 날 아 오 르 는 것 에 대해 XML 파일 두 개 를 정의 하 는 것 입 니 다.예 를 들 면:
애니메이션 xml 로 날 아가 기:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromYDelta="-100"
android:toYDelta="0"
android:duration="1000"
android:fillEnabled="true"
android:fillAfter="true"
/>
<scale android:fromXScale="0.6" android:toXScale="1.0"
android:fromYScale="0.6" android:toYScale="1.4" android:pivotX="50%"
android:pivotY="50%" android:duration="2000"
android:fillAfter="false"/>
<alpha android:interpolator="@android:anim/decelerate_interpolator"
android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="2000" />
<rotate
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromDegrees="0"
android:toDegrees="+359"
android:pivotX="50%"
android:pivotY="50%"
android:duration="2000">
</rotate>
</set>
anin.xml
애니메이션 날 리 기:
anout.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="true"
>
<translate android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromYDelta="0"
android:toYDelta="-100"
android:duration="1000"
android:fillEnabled="true"
android:fillAfter="true"
/>
<scale android:fromXScale="1.0" android:toXScale="0.4"
android:fromYScale="1.0" android:toYScale="0.4" android:pivotX="50%"
android:pivotY="50%" android:duration="2000" />
<alpha android:interpolator="@android:anim/decelerate_interpolator"
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="2000"
/>
</set>
위의 애니메이션 의 특징 을 정리 하 자.
1. 투명도 그 라 데 이 션
2. 사이즈 신축
3. 화면 회전
4. 위치 이동
그러면 이런 애니메이션 은 xml 에 나타 날 수 있 고 코드 에 도 나타 날 수 있다.코드 에서 상기 네 가지 애니메이션 형식 에 대해 다음 과 같이 요약 할 수 있다.
1. 투명도 그 라 데 이 션
AlphaAnimation(float fromAlpha,float toAlpha);
이 매개 변 수 는 xml 파일 의 매개 변수 와 대응 하 며 (뒤의 것 도 모두 대응) 기능 은 xml 파일 의 것 과 일치 합 니 다.
from Alpha: 애니메이션 시작 시의 투명 도 를 표시 합 니 다.
toAlpha: 애니메이션 이 끝 날 때의 투명 도 를 표시 합 니 다.
0.0 은 완전 투명, 1.0 은 완전 불투명 을 나타 낸다.
2. 사이즈 신축
ScaleAnimation(float fromXScale,float toXScale,float fromYScale,float toYScale,int pivotXType,float pivotX,int pivotYType,float pivotY)
from XScale, toXScale: 시작 과 끝 에 있 는 X 좌표 의 신축;
from YScale, toYScale: 시작 과 끝 에 있 는 Y 좌표 의 신축;
pivotx: 신축 애니메이션 이 X 좌표 에 대한 시작 위 치 를 표시 합 니 다.
pivoty: 신축 애니메이션 이 Y 좌표 의 시작 위치 에 비해
pivotXType: X 좌표 의 신축 모드;
pivoty Type: Y 좌표 의 신축 모드 입 니 다.
3. 화면 회전
RotateAnimation(float fromDegrees,float toDegrees,int pivotXType,float pivotX,int pivotYType,float pivotY)
from Degrees, toDegrees: 시작 과 끝 날 때의 각도;
from YScale, toYScale: 시작 과 끝 에 있 는 Y 좌표 의 신축;
pivotx: 신축 애니메이션 이 X 좌표 에 대한 시작 위 치 를 표시 합 니 다.
pivoty: 신축 애니메이션 이 Y 좌표 의 시작 위치 에 비해
pivotXType: X 좌표 의 신축 모드;
pivoty Type: Y 좌표 의 신축 모드 입 니 다.
4. 위치 이동
TranslateAnimation(float fromXDelta,float toXDelta,float fromYDelta,float toYDelte)
from XDelta, from YDelta: 시작 할 때의 좌표;
toXDelta, toYDelta: 끝 날 때의 좌표;
물론 코드 에서 이런 설정 을 한 후에 애니메이션 을 재생 해 야 합 니 다. 그러면 애니메이션 을 재생 하 는 함 수 는 다음 과 같 습 니 다.
startAnimation(Animation animation)
애니메이션 은 재생 할 애니메이션 입 니 다.
또한 애니메이션 을 재생 할 시간 을 설정 해 야 합 니 다.
setDuration(long duration)
duration 은 애니메이션 에 표 시 된 시간 으로 밀리초 단위 입 니 다.
이상 에서 소개 한 것 은 안 드 로 이 드 플랫폼 의 Tween 애니메이션 입 니 다. 안 드 로 이 드 플랫폼 에서 모두 두 가지 애니메이션 을 제 공 했 고 다른 하 나 는 Frame 애니메이션 입 니 다.
Frame 애니메이션 이 재생 되 려 면 프레임 이 많은 그림 이 필요 합 니 다.우선 XML 파일 에서 설명 할 수 있 습 니 다.
framean.xml:
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/pic1" android:duration="100" />
<item android:drawable="@drawable/pic2" android:duration="100" />
<item android:drawable="@drawable/pic3" android:duration="100" />
…
…
…
</animation-list>
JAVA 코드:
public class GameView extends View
{
// AnimationDrawable
private AnimationDrawable frameAnimation = null;
Context mContext = null;
public GameView(Context context)
{
super(context);
mContext = context;
// ImageView
ImageView myImageView = new ImageView(mContext);
//
myImageView.setBackgroundResource(R.anim.framean);
//
frameAnimation = (AnimationDrawable)myImageView.getBackground();
//
frameAnimation.setOneShot( false );
//
this.setBackgroundDrawable(frameAnimation);
}
public void onDraw(Canvas canvas)
{
super.onDraw(canvas);
}
public boolean onKeyUp(int keyCode, KeyEvent event)
{
switch ( keyCode )
{
case KeyEvent.KEYCODE_DPAD_UP:
/* */
frameAnimation.start();
break;
}
return true;
}
}
xml 로 설명 하지 않 고 코드 를 직접 사용 하 는 방법 은:
public class GameView extends View {
// AnimationDrawable
private AnimationDrawable frameAnimation = null;
Context mContext = null;
// Drawable
Drawable myBitAnimation = null;
public GameView(Context context) {
super(context);
// AnimationDrawable
mContext = context;
frameAnimation = new AnimationDrawable();
// ,
for(int i=1;i<=3;i++)
{
int id = getResources().getIdentifier("pic"+i, "drawable", mContext.getPackageName());
myBitAnimation = getResources().getDrawable(id);
// , myBitAnimation , 100 ,
frameAnimation.addFrame(myBitAnimation, 100);
}
// ,false
frameAnimation.setOneShot(false);
//
this.setBackgroundDrawable(frameAnimation);
public void onDraw(Canvas canvas){
super.onDraw(canvas);
public boolean onKeyUp(int keyCode, KeyEvent event)
{
switch ( keyCode )
{
case KeyEvent.KEYCODE_DPAD_UP:
//
frameAnimation.start();
break;
}
return true;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.