D9-Android自定義控件之動畫篇1

本篇是關於ObjectAnimator的演示 ObjectAnimator是針對有setXxxxxx方法的屬性,進行的"Xxxxxx"屬性變化動畫 繪製部分就不廢話了,前面已經說很多了,直接進入主題


一、下移示例:

下移動畫.gif

/**
 * 下移動畫
 */
private ObjectAnimator mMoveDown;
float translationY = getTranslationY();//當前Y偏移量
mMoveDown = ObjectAnimator//創建實例
        //(View,屬性名,初始化值,結束值)
        .ofFloat(this, "translationY", translationY, translationY + 300)
        .setDuration(1000);//設置時常
mMoveDown.start();//開啓動畫

加上背景看一下,可以看出是整個View進行了變化。

加背景.gif

常用屬性一覽:

屬性名

演示

解釋

alpha

透明度1~0

translationX

X方向移動

translationY

Y方向移動

rotation

旋轉(默認View中心點)

rotationX

X軸旋轉(默認View中心橫軸)

translationY

Y軸旋轉(默認View中心縱軸)

scaleX

X縮放 倍數

scaleY

Y縮放 倍數


二、其他

1.旋轉縮放中心點設置:
setPivotX(200);
setPivotY(200);

旋轉中心點.gif

2.多參數

0-->360 360-->0 0-->90

.ofFloat(this, "rotation", 0, 360,360,0,0,90)

多參數.gif

3.延遲、重複、重複模式

重複模式:ValueAnimator.RESTART(1)和ValueAnimator.REVERSE(2) 重複次數:ValueAnimator.INFINITE爲無限循環(-1)

translationX.setStartDelay(1000);
translationX.setRepeatCount(2);
translationX.setRepeatMode(ValueAnimator.RESTART);
RESTART重複效果

延遲,RESTART重複.gif

REVERSE重複效果

REVERSE重複.gif


三、自定義ObjectAnimator屬性

內置的只是一些常用的,我們也可以自定義自己的屬性

1.自定義圓的大小動畫

必須用一個setXxx的方法,屬性名則爲xxx,調用重繪方法

public void setCircleR(float circleR) {
    mCircleR = circleR;
    invalidate();//記得重繪
}
private ObjectAnimator circleR() {
    return ObjectAnimator//創建實例
            //(View,屬性名,初始化值,結束值)
            .ofFloat(this, "circleR", 100, 50,100,20,100)
            .setDuration(3000);//設置時常
}

自定義半徑.gif

2.自定義顏色動畫
public void setColor(int color) {
    mColor = color;
    invalidate();
}
private ObjectAnimator color() {
    ObjectAnimator color = ObjectAnimator//創建實例
            //(View,屬性名,初始化值,結束值)
            .ofInt(this, "color", 0xff0000ff,0xffF2BA38,0xffDD70BC)
            .setDuration(3000);
    color.setEvaluator(new ArgbEvaluator());//顏色的估值器
    return color;
}

自定義顏色.gif

下一篇將會帶來:set動畫集來控制多個動畫,以及動畫的監聽。


後記、

1.聲明:

[1]本文由張風捷特烈原創,轉載請註明 [2]歡迎廣大編程愛好者共同交流 [3]個人能力有限,如有不正之處歡迎大家批評指證,必定虛心改正 [4]你的喜歡與支持將是我最大的動力

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章