안 드 로 이 드 애니메이션 - 보기 애니메이션 (애니메이션 보기)

안 드 로 이 드 애니메이션 은 보기 애니메이션 (View Animation), 속성 애니메이션 (Property Animation) 으로 나 뉜 다.
속성 애니메이션 보고 싶 음 (Property Animation): 이동 하 십시오.http://blog.csdn.net/u013424496/article/details/51700312
여기 서 다음 보기 애니메이션 (View Animation) 의 순 코드 쓰기, 그리고 하 나 는 xml 호출 입 니 다.
xml 호출 에 대해 서 는 보 러 갈 수 있 습 니 다. http://blog.csdn.net/u013424496/article/details/51144171
상대 속성 애니메이션 보기 애니메이션 사용 환경:
view animation system 이 제공 하 는 능력 은 View 에 애니메이션 만 추가 할 수 있 습 니 다.따라서 비 View 대상 에 애니메이션 을 추가 하려 면 스스로 실현 해 야 합 니 다.
view animation system 은 View 애니메이션 의 표현 에 있어 서도 제약 이 있 고 View 의 적은 부분 만 노출 되 었 다.예 를 들 어 View 는 크기 조정 과 회전 을 지원 하지만 배경 색 의 애니메이션 은 지원 되 지 않 습 니 다.
view animation system 의 또 다른 약점 은 View 의 그리 기 효과 입 니 다. 진정한 View 의 속성 은 변 하지 않 습 니 다. 예 를 들 어 대화 에서 Button 의 크기 를 어떻게 조정 하 든 Button 의 효과 적 인 클릭 구역 은 애니메이션 에 적용 되 지 않 았 을 때 그 위치 와 크기 가 변 하지 않 습 니 다.
그러나 View animation system 은 만 드 는 데 시간 이 적 고 코드 가 적 습 니 다.만약 에 View 애니메이션 이 모든 동작 을 완 성 했 거나 존재 하 는 코드 가 원 하 는 효과 에 이 르 렀 다 면 property 애니메이션 시스템 을 사용 할 필요 가 없습니다.
도해 류 구조
크게 4 가지 로 나 뉜 다. Scale Animation 크기 조정, TranslateAnimation, 그 라 데 이 션 Alpha Animation, 회전 RotateAnimation.
android 动画 ——视图动画(View Animation)_第1张图片
다음은 이 몇 개의 애니메이션 의 순 코드 실현 방식 에 대해 간단히 이야기 하 겠 습 니 다.
animation.setFillAfter(true);//애니메이션 을 끝 낼 때 현재 상 태 를 유지 하고 애니메이션 이 시 작 된 디 스 플레이 상태 로 돌아 가지 않 습 니 다.
스 케 일 애니메이션 크기 조정
1)
// View         ,        ,            
		float fromXScale = 1.0f;
		float toScaleX = 2.0f;
		float fromYScale = 1.0f;
		float toScaleY = 0.5f;
		Animation animation = new ScaleAnimation(fromXScale, toScaleX, fromYScale, toScaleY);
		//        
		animation.setDuration(3000);
		//  View startAnimation          View 
		textView.startAnimation(animation);

효과 그림:
2)
// View         ,                  
float fromXScale = 1.0f;
float toScaleX = 0.5f;
float fromYScale = 1.0f;
float toScaleY = 0.5f;
float pivotX = textView.getWidth() / 2;
float pivotY = textView.getHeight() / 2;
Animation animation = new ScaleAnimation(
    fromXScale, toScaleX,
    fromYScale, toScaleY,
    pivotX, pivotY
);
    //        
    animation.setDuration(3000);
    //  View startAnimation          View 
    textView.startAnimation(animation);

효과 도: android 动画 ——视图动画(View Animation)_第2张图片
3)
// View         ,                  
float fromXScale = 1.0f;
float toScaleX = 0.5f;
float fromYScale = 1.0f;
float toScaleY = 0.5f;
int pivotXType = Animation.RELATIVE_TO_SELF;
float pivotXValue = 0.5f;
int pivotYType = Animation.RELATIVE_TO_SELF;
float pivotYValue = 0.5f;
Animation animation = new ScaleAnimation(
    fromXScale, toScaleX,
    fromYScale, toScaleY,
    pivotXType, pivotXValue,
    pivotYType, pivotYValue
);
//        
animation.setDuration(3000);
//  View startAnimation          View 
textView.startAnimation(animation);

효과 그림:
평이 TranslateAnimation
두 가지 구조 방법 이 있다.
1)
		int fromXDelta = 0;
		int toXDelta = getResources().getDisplayMetrics().widthPixels / 2;
		int fromYDelta = 0;
		int toYDelta = 0;
		//          X   toXDelta   
		Animation animation = new TranslateAnimation(fromXDelta, toXDelta, fromYDelta, toYDelta);
		//         5000  
		animation.setDuration(5000);
		textView.startAnimation(animation);
효과 그림:
android 动画 ——视图动画(View Animation)_第3张图片
부분 코드 소개:
from XDelta 는 애니메이션 이 시 작 될 때 View 가 원래 위치 X 축 방향 에 대한 오프셋 좌표 를 나타 낸다.
toXDelta 는 애니메이션 이 끝 날 때 View 가 원래 위치 X 축 방향의 오프셋 좌표 에 비해
from YDelta 는 애니메이션 이 시 작 될 때 View 가 원래 위치 Y 축 방향 에 대한 오프셋 좌표 를 나타 낸다.
toYDelta 는 애니메이션 이 끝 날 때 View 가 원래 위치 Y 축 방향의 오프셋 좌표 에 비해
2)
//  fromX
int fromXType = Animation.ABSOLUTE;
float fromXValue = textView.getX();
//  toX
int toXType = Animation.RELATIVE_TO_PARENT;
float toXValue = 0.5f;
//  fromY
int fromYType = Animation.ABSOLUTE;
float fromYValue = textView.getY();
//  toY
int toYType = Animation.RELATIVE_TO_SELF;
float toYValue = 3.0f;
//    
Animation animation = new TranslateAnimation(
        fromXType, fromXValue,
        toXType, toXValue,
        fromYType, fromYValue,
        toYType, toYValue);
//         3000  
animation.setDuration(3000);
//  View startAnimation          View 
textView.startAnimation(animation);

효과 그림:
android 动画 ——视图动画(View Animation)_第4张图片
부분 코드 소개:
from X Type 과 from Xvalue 는 from X Type 의 수치 유형 이 from Xvalue 의 값 을 어떻게 설정 하 는 지 설명 합 니 다.from X Type 의 수 치 는 세 가지 가 있 는데 그것 이 바로 ABSOLUTE, RELATIVE 이다.TO_PARENT 와 RELATIVETO_SELF。
ABSOLUTE  fromX Type 에서 ABSOLUTE 값 을 추출 할 때 fromXvalue 의 값 은 이 View 의 부모 컨트롤 의 좌표계 의 절대 값 임 을 나타 낸다. 예 를 들 어 fromXvalue 가 200 이 고 애니메이션 이 시 작 될 때 View 의 왼쪽 에서 부모 컨트롤 왼쪽 까지 의 거 리 는 200 픽 셀 이다.
RELATIVE_TO_PARENT  from X Type 에서 값 을 RELATIVE 로 추출 하면TO_PARENT 에 서 는 from Xvalue 의 값 이 부모 컨트롤 크기 에 비해 백분율 임 을 나타 낸다.예 를 들 어 from Xvalue 는 0 으로 애니메이션 이 시 작 될 때 View 의 왼쪽 은 부모 컨트롤 의 왼쪽 에 바짝 붙 어 있 음 을 나타 낸다.from Xvalue 가 0.5 일 때 애니메이션 이 시 작 될 때 View 의 왼쪽 위 치 는 부모 컨트롤 수평 방향 중간 에 있 음 을 나타 낸다.from Xvalue 가 1 일 때 애니메이션 이 시 작 될 때 View 의 왼쪽 위치 와 부모 컨트롤 의 오른쪽 위치 가 완전히 겹 치 는 것 을 나타 낸다.
RELATIVE_TO_SELF  from X Type 에서 값 을 RELATIVE 로 추출 하면TO_SELF 에 서 는 from Xvalue 의 값 이 자신의 사이즈 에 비해 백분율 임 을 나타 낸다.예 를 들 어 from Xvalue 는 0 으로 애니메이션 이 시 작 될 때 View 의 X 좌 표 는 초기 위치의 X 좌표 와 같다 는 것 을 나타 낸다.from Xvalue 가 0.5 일 때 애니메이션 이 시 작 될 때 View 의 왼쪽 위 치 는 초기 View 상태 에서 수평 방향 중간 위치, 즉 View 너비 의 절반 을 오른쪽으로 이동 한 것 을 나타 낸다.from Xvalue 가 1 일 때 애니메이션 이 시 작 될 때 View 의 왼쪽 위 치 는 초기 View 상태 에서 오른쪽 위치 와 겹 치 는 것 을 나타 낸다. 즉, 오른쪽 으로 View 의 너비 크기 와 거 리 를 옮 겼 다.
그 라 데 이 션 알파 애니메이션
코드:
//1.0       ,0.0      
float fromAlpha = 0.0f;
float toAlpha = 1.0f;
//1.0 => 0.0  View             
Animation animation = new AlphaAnimation(fromAlpha, toAlpha);
//         3000  
animation.setDuration(5000);
//  View startAnimation          View 
textView.startAnimation(animation);

효과 그림:
android 动画 ——视图动画(View Animation)_第5张图片
회전 회전 애니메이션
1)
// View       ,    60    
Animation animation = new RotateAnimation(0, 60);
//        
animation.setDuration(3000);
//  View startAnimation          View 
textView.startAnimation(animation);
효과 그림:
android 动画 ——视图动画(View Animation)_第6张图片
2) hava problem.
onCreate () 과정 에서 View 의 width 와 Height 를 0 으로 가 져 오 는 4 가지 방법 을 해결 합 니 다.
<pre name="code" class="html">	// View        ,    90    
		textView.post(new Runnable() {
			
			@Override
			public void run() {
				float pivotX = textView.getWidth() / 2;
				float pivotY = textView.getHeight() / 2;
				Animation animation = new RotateAnimation(0, 90, pivotX, pivotY);
				//        
				animation.setDuration(3000);
				//  View startAnimation          View 
				textView.startAnimation(animation);
			}
		});
 效果图: 
 
android 动画 ——视图动画(View Animation)_第7张图片
3)
// View            ,    360    
int pivotXType = Animation.RELATIVE_TO_PARENT;
float pivotXValue = 0.5f;
int pivotYType = Animation.RELATIVE_TO_PARENT;
float pivotYValue = 0.5f;
Animation animation = new RotateAnimation(
    0, 360,
    pivotXType, pivotXValue,
    pivotYType, pivotYValue
);
//        
animation.setDuration(3000);
//  View startAnimation          View 
textView.startAnimation(animation);

효과 도: android 动画 ——视图动画(View Animation)_第8张图片
결론: 주로 세 편 이 죠?
  1) Animation 키 클래스 를 만 드 는 인 스 턴 스
  2) 애니메이션 의 setDuration 방법 으로 애니메이션 지속 시간 설정
  3) 마지막 으로 View 의 startAnimation 방법 으로 애니메이션 을 시작 합 니 다.
참, 마지막 하나 더 있어.
AnimationSet
	//    Translate    
		TranslateAnimation	translateAnimation = new TranslateAnimation(0.1f, 100.0f,0.1f,100.0f);  
		//    Alpha    
		AlphaAnimation alphaAnimation = new AlphaAnimation(0.0f, 1.0f);  
		  
		//     
		AnimationSet set = new AnimationSet(true);  
		set.addAnimation(translateAnimation);  
		set.addAnimation(alphaAnimation);  
		  
		//       (       )  
		set.setDuration(3000);  
		//  View startAnimation          View 
		textView.startAnimation(set);  

효과 도 android 动画 ——视图动画(View Animation)_第9张图片

좋은 웹페이지 즐겨찾기