多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > Android動畫----ValueAnimator

Android動畫----ValueAnimator

來源:程序員人生   發布時間:2017-04-07 11:20:13 閱讀次數:5216次

引言

  關于Android動畫的內容,我們已講了好幾篇了,都是1些最基礎的,包括Alpha、Translate、Rotate、Scale都是常見的補間動畫(Tween Animation),屬于視圖動畫(包括補間動畫和幀動畫),今天我們來學習另外一種類型,屬性動畫,主角是ValueAnimator。
  那末肯定有人會疑惑視圖動畫和屬性動畫有甚么區分?那就看下面我對這兩種動畫的理解:
  

  • 視圖動畫:只改變控件的顯示效果和顯示位置,不改變控件本身的屬性。
  • 屬性動畫:改變控件的某1屬性,從而實現控件的展現的動畫效果。

ValueAnimator

  ValueAnimator也是繼承自Animator類,它本質是提供了1個時間的引擎去提供1系列變化的值并將其值賦值與目標控件上。

ValueAnimator xml實現方式

  這里是1個簡單的使用xml來實現ValueAnimator的方式
  第1步,在res文件下新建animator文件夾,并在animator文件夾下新建valueanimator.xml文件,目錄結構以下圖所示:
  這里寫圖片描述
  第2步,編寫valueanimator.xml文件內容:以下

<?xml version="1.0" encoding="utf⑻"?>
<animator xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="10000"
    android:valueFrom="0"
    android:valueTo="100"
    android:valueType="intType"
    android:repeatCount="0"
    android:interpolator="@android:anim/linear_interpolator"
    android:repeatMode="reverse"/>

  第3步,實例化valueanimator
  

private ValueAnimator valueAnimator;  //聲明動畫對象
……
valueAnimator = (ValueAnimator)AnimatorInflater.loadAnimator(this,R.animator.valueanimator); //實例化
/*AnimatorInflator 是Andorid 提供的屬性動畫幫助類*/

  第4部,添加動畫監聽

valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator valueAnimator) {
              int value = (Integer)valueAnimator.getAnimatedValue(); //獲得動畫的值
              mTVValue.setText(value+""); //把值設為控制的值,nTVValue是1個TextView
            }
        });

  第5步,開始動畫

valueAnimator.start();

ValueAnimator 代碼實現方式

  第1步,聲明對象,并實例化
  

private ValueAnimator valueAnimator;
……
valueAnimator = new ValueAnimator();

  第2步,設置相干參數

valueAnimator.setIntValues(0,100);
valueAnimator.setDuration(10000);
valueAnimator.setInterpolator(new LinearInterpolator());

  第3步,添加動畫監聽
  

valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator valueAnimator) {
              int value = (Integer)valueAnimator.getAnimatedValue();
              mTVValue.setText(value+"");
            }
        });

  第4步,履行動畫

valueAnimator.start();

動畫效果

先簡單的看1下動畫效果
這里寫圖片描述

這算是最簡單基礎的ValueAnimator的用法。使用流程基本如此,其它也基本是在這個流程上做擴充,在使用的進程中可以自行了解1下。

ValueAnimator中經常使用函數說明

void addUpdateListener(ValueAnimator.AnimatorUpdateListener listener)  //動畫值監聽函數

void cancel() //取消動畫

void end() //結束動畫

static ValueAnimator    ofArgb(int... values)//色彩動畫構造函數

static ValueAnimator    ofFloat(float... values)//浮點動畫構造函數

static ValueAnimator    ofInt(int... values) //整型動畫構造函數

static ValueAnimator    ofObject(TypeEvaluator evaluator, Object... values) //對象動畫構造函數

static ValueAnimator    ofPropertyValuesHolder(PropertyValuesHolder... values) //不知道怎樣翻譯

void    setEvaluator(TypeEvaluator value) //設置值計算器

void    setInterpolator(TimeInterpolator value) //設置插值器

void    pause()//暫停動畫

void    resume() //恢復動畫
//

色彩動畫示例

示例代碼:

xml

<?xml version="1.0"  encoding="utf⑻"?>
<animator
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="10000"
    android:valueFrom="#ffff0000"
    android:valueTo="#ffffffff"
    android:valueType="colorType"
    />

監聽器

colorValueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator valueAnimator) {
                int color = (Integer)valueAnimator.getAnimatedValue();
                mTVValue.setBackgroundColor(color);
            }
        });

效果
這里寫圖片描述

對象動畫示例

Javacode

 /*代碼實現對象動畫*/
        objectValueAnimator = ValueAnimator.ofObject(new MyAnimObjectEvaluator(),new MyAnimObject(0),new MyAnimObject(10));
        objectValueAnimator.setDuration(10000);
        objectValueAnimator.setInterpolator(new LinearInterpolator());
/*對象動畫*/
    class MyAnimObject{

        int value;

        public MyAnimObject(int value){
            this.value = value;
        }
    }
    /*對象動畫算值器*/
    class MyAnimObjectEvaluator implements TypeEvaluator<MyAnimObject>{

        @Override
        public MyAnimObject evaluate(float v, MyAnimObject myAnimObject, MyAnimObject t1) {
            int oldValue = myAnimObject.value;
            int newValue = t1.value;

            int res = (int)((oldValue + newValue)*v)*2;  //返回偶數
            MyAnimObject animObject = new MyAnimObject(res);
            return animObject;
        }
    }

監聽器

objectValueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator valueAnimator) {
                MyAnimObject value = (MyAnimObject)valueAnimator.getAnimatedValue();
                mTVValue.setText(value.value);

            }
        });

效果:
這里寫圖片描述

結尾

關于ValueAnimator的基礎學習,這篇博客就先到這里,關于本篇博客用到動畫值計算器和插值器,會在下篇博客進行專門講授。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲黄色在线看 | 中文字幕免费观看视频 | 亚洲综合亚洲综合网成人 | 中文字幕中韩乱码亚洲大片 | 国产视频综合 | 国产激情久久久久影 | 羞羞首页 | 国产女人18一级毛片视频 | 日本www高清免费视频观看 | 视频一区 国产 | 秋霞免费手机理论视频在线观看 | 色综合久久中文 | 精品国产三级v | 久久91久久91精品免费观看 | 另类专区另类专区亚洲 | 欧美成人 综合网播九公社 欧美成人18 | 国产人成亚洲第一网站在线播放 | 国产亚洲一区二区在线观看 | 在线观看中文字幕亚洲 | 日韩在线aⅴ免费视频 | 成人免费精品视频 | free欧美xxxxvideo free欧美性杂交hd | 波多野结衣视频在线看 | 精品国产欧美另类一区 | 欧洲乱码专区一区二区三区四区 | 久久精品这里 | 亚洲欧美日韩精品高清 | 69视频在线观看高清免费 | 国产性生活 | 日韩欧美成末人一区二区三区 | 国产成人亚洲精品77 | 欧美大陆日韩一区二区三区 | 精品国产一区二区三区久 | 美女福利视频国产免费观看 | 伊人网亚洲 | 日韩偷拍自拍 | 亚洲视频在线不卡 | 亚洲欧洲网站 | 欧美一区二区三区免费 | 久久久久久极精品久久久 | 亚洲小说另类 |