Android動畫Animator開發問題

來源:互聯網
上載者:User

標籤:android   animation   scale   迴圈播放   


在開發Android的Animator時遇到如下問題:

1. 關於Animator的迴圈播放:

         在Animator動畫中有迴圈的設定方法setRepeatCount(ValueAnimator.INFINITE) , 而對於AnimatorSet需要實現迴圈播放,實現方法如下代碼:

private AtomicBoolean isStart = new AtomicBoolean(false);


animatorSet.addListener(new Animator.AnimatorListener() {      @Override      public void onAnimationStart(Animator animation) {    }        @Override      public void onAnimationEnd(Animator animation) {              if (isStart.get()) {                     animation.start();      }  }        @Override      public void onAnimationCancel(Animator animation) {    }    @Override      public void onAnimationRepeat(Animator animation) {        }});animatorSet.start();public void stopRecognizerViewAnim() {    isStart.set(false);}

 

2 . 關於View的縮放: 

 

  對於View的縮放一般使用scale。如果縮放的是GroupView,則內部的組件也隨著縮放。如果不希望縮放內部的view,而僅僅是寬度或高度的縮放, 實現方法如下代碼: 


mAnimatorSet = new AnimatorSet();ValueAnimator height = ValueAnimator.ofObject(new WidthEvaluator(), mCurrWidth, mPreWidth);height.setDuration(DURATION);mAnimatorSet.playTogether(height);mAnimatorSet.addListener(new Animator.AnimatorListener() {    @Override    public void onAnimationStart(Animator animation) {            }    @Override    public void onAnimationEnd(Animator animation) {            }    @Override    public void onAnimationCancel(Animator animation) {    }    @Override    public void onAnimationRepeat(Animator animation) {    }});mAnimatorSet.start();


private class WidthEvaluator extends IntEvaluator {    @Override    public Integer evaluate(float fraction, Integer startValue, Integer endValue) {        int value = super.evaluate(fraction, startValue, endValue);        ViewGroup.LayoutParams layoutParams = getLayoutParams();        layoutParams.width = value;        setLayoutParams(layoutParams);        return value;    }}


3. 如果同一個AnimatorSet中多個Animator需要設定before() 或者after() ,不能再同一個AnimatorSet中設定多個before() 或者after()。例如: play(AAnimator).before(BAnimator).before(CAnimator).. 是錯誤的。 這個是我個人的理解,如果不正確,請留言告知。



本文出自 “Android - 靜心之作” 部落格,請務必保留此出處http://6246534.blog.51cto.com/6236534/1860430

Android動畫Animator開發問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.