ValueAnimator valueAnimator是整個屬性動畫機制當中最核心的一個類。 簡單使用 ValueAnimator anim = ValueAnimator.ofFloat(0f,1f); anim.setDuration(1000); anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { float current = (float) animation.getAnimatedValue(); Log.e(“TAG”,current+”“); } }); anim.start(); 從0 變成1的過程
valueAnimator最常用的方法就是ofFloat()、ofInt()、等還有ofObject(); 此外,還可以調用setStartDelay()方法來設置動畫延遲播放的時間 調用setRepeatCount()和setRepeatMode()方法設置動畫循環播放次數和循環播放模式, 循環模式包括RESTART和REVERSE兩種,分別表示重新播放個倒敘播放的意思。
ObjectAnimator objectAbunator可以對任意對象的任意屬性就行動畫操作。 例如:把一個imgeView從常規變成透明 ObjectAnimator animator = ObjectAnimator.ofFloat(img,”alpha”,1.0f,0.0f); animator.setDuration(1000); animator.start(); 同理rotate translate scale 同樣效果
組合動畫 實現組合動畫主要借助AnimatorSet這個類,提供了一個play()方法,如果向這個方法中傳入一個Animator對象將會返回一個AnimatorSet.Builder的實例,Animatorset.Builder包括下面四個方法: 1.after(Animator anim)將現有動畫插入到傳入的動畫之后執行 2.after(long delay) 將現有動畫延遲指定毫秒后執行 3.before(Animator anim) 將現有動畫插入到傳入的動畫之前執行 4.with(Animator anim) 將現有動畫和傳入的動畫同時執行
ObjectAnimator moveIn = ObjectAnimator.ofFloat(img,"translationX",-500f,0f); ObjectAnimator rotate = ObjectAnimator.ofFloat(img,"rotate",0f,360f); ObjectAnimator fadeInout = ObjectAnimator.ofFloat(img,"alpha",1f,0f,1f); AnimatorSet animatorSet = new AnimatorSet(); animatorSet.play(rotate).with(fadeInout).after(moveIn); animatorSet.setDuration(2000); animatorSet.start();Animator監聽器 Animator提供了一個addListener()方法,這個方法接受一個AnimatorListener,只需要實現這個AnimatorListener就可以監聽。
animatorSet.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) { } });使用xml編寫屬性動畫 首先在res目錄下創建animtor文件夾,所有屬性動畫的文件都放在xml下 在xml文化中我們一共可使用以下三個標簽: animator objectAnimator set 例1:實現一個從0-100的過度
新聞熱點
疑難解答