AnimationOne

5631 단어 animation
Animation 은 전체적으로 세 가지 애니메이션 이 있 는데 그것 이 바로 FrameAnimation, TweenAnimation 과 사용자 정의 애니메이션 이다.
    앞의 두 가지 애니메이션 은 developer 에서 간단 한 소개 가 있 습 니 다. 관심 이 있 는 학생 은 볼 수 있 습 니 다.
   [url] http://developer.android.com/guide/topics/graphics/view-animation.html[/url]
    (1) 프레임 애니메이션
       쉽게 말 하면 영화 필름 과 마찬가지 로 그림 을 연속 으로 재생 하여 애니메이션 을 구성 하 는 것 이다.
       res / drawable 에서. xml 파일 을 정의 하고 재생 할 그림 을 설정 합 니 다.  duration 그림 재생 시간
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
         <item android:drawable="@drawable/loading_1" android:duration="160" />
         <item android:drawable="@drawable/loading_2" android:duration="160" />
         <item android:drawable="@drawable/loading_3" android:duration="160" />
</animation-list>

네.자바
AnimationDrawable mLoadingAnim;
ImageView animView = (ImageView) findViewById(R.id.loading_anim);
animView.setBackgroundResource(R.drawable.card_loading_anim);
mLoadingAnim = (AnimationDrawable) animView.getBackground();
 mLoadingAnim.setOneShot(false);  //      
mLoadingAnim.start();  
               
  (2) TweenAnimation
쉽게 말 하면 컴퓨터 를 통 해 도형 을 바 꾸 는 것 이다.anroid 에서 제공 하 는 4 가지 이미지 변환 은 scale (사이즈 확대 축소), alpha (투명도 변환), translate (위치 변환), rotate (회전 변환) 이다.
res / anim 에서 그림 의 변 화 를 정의 합 니 다.
<?xml version="1.0" encoding="utf-8"?>
<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:duration="400"/>
           <rotate
              android:fromDegrees="0"
              android:toDegrees="-45"
              android:toYScale="0.0"
              android:pivotX="50%"
              android:pivotY="50%"
              android:duration="400" />
        </set>

자바
Animation anim;
anim = AnimationUtils.loadAnimation(this, R.anim.go);
ImageView animView = (ImageView) findViewById(R.id.loading_anim);
animView.startAnimation(anim);

scale, rotate, translate, alpha 는 xml 에 많은 속성 이 있 습 니 다. 관심 이 있 는 학생 들 은 developer 에서 문 서 를 보 거나 아래 연결 을 클릭 하여 정 리 를 할 수 있 습 니 다.
http://liaobingyun.blog.163.com/blog/static/12981211120099975217653/
Animation 류 에서 많은 인 터 페 이 스 를 제공 하여 일부 기능 을 편리 하 게 실현 할 수 있 습 니 다. 본인 이 자주 사용 하 는 세 개의 인터페이스, 그래서 생각 합 니 다.
                 
 public void onAnimationEnd(Animation animation) {
                        // TODO Auto-generated method stub
                    }

                   @Override
                    public void onAnimationRepeat(Animation animation) {
                        // TODO Auto-generated method stub

                    }

                    @Override
                    public void onAnimationStart(Animation animation) {
                        // TODO Auto-generated method stubd

                    }

Tween Animation 에서 xml 파일 을 버 리 고 바로 있 을 수 있 습 니 다.자바 에서 정의 하기 (물론 FrameAnimation 도 가능 합 니 다)
AnimationSet animSet = new AnimationSet(false);
Animation anim1 = new AlphaAnimation(1,0);
Animation anim2 = new RotateAnimation(0,360,30,30);
anim1.setDuration(400);
anim2.setDuration(400);
animSet.addAnimation(anim1);
animSet.addAnimation(anim2);
view.setAnimation(animSet);
animSet.startNow();

여기 서 AnimationSet 의 애니메이션 은 동시에 재생 되 고 안 드 로 이 드 는 연속 재생 인 터 페 이 스 를 제공 하지 않 습 니 다. startOffset 설정 을 통 해 이 문 제 를 해결 할 수 있 습 니 다.
        anim2.setStartOffset(1000);
이렇게 anim 2 의 애니메이션 효 과 는 anim 1 에서 1000 m 를 재생 한 후에 재생 됩 니 다.
마지막 으로 애니메이션 을 불 러 오 는 일반적인 화면 은 움 직 이지 않 습 니 다.안 드 로 이 드 때문에 onCreate 에서 anim. start () 를 재생 하 는 것 은 잘못 되 었 습 니 다. handleMessage 방식 이나 listener 를 통 해 이 벤트 를 촉발 한 후에 불 러 와 야 합 니 다.
방식 1:
Button btn  =(Button) findViewById(R.id.btn);

         btn.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v) {
                showAnimation();
            }
});

방식 2:
myHandler handler = new myHandler ();
                handler.sendEmptyMessage(1);

private class AnimationHandler extends Handler {
        @Override
        public void handleMessage(Message msg) {
            switch(msg.what) {
                   case SHOW_CARD_ANIMATION:{
                           handler.postDelayed(new Runnable() {
                                  @Override
                                  public void run() {
                                         showCardAnim();
                                   }
                            }, 0);
                     break;
                }
            }
        }
    }

조판 귀찮아 죽 겠 어 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

좋은 웹페이지 즐겨찾기