屬性動(dòng)畫(huà)的出現(xiàn)池摧,彌補(bǔ)了補(bǔ)間動(dòng)畫(huà)的不足之處,補(bǔ)間動(dòng)畫(huà)激况,只是改變了表面上的東西作彤,但是其中屬性并未改變,而屬性動(dòng)畫(huà)相反乌逐,改變了表面上的東西竭讳,并且也更改了其屬性。
屬性動(dòng)畫(huà) Animator
- ValueAnimator 屬性的值變了 視覺(jué)沒(méi)變
- ObjectAnimator 屬性浙踢、視覺(jué)都變了
- TimeAnimator
類:ObjectAnimator
用于操作屬性動(dòng)畫(huà)的類
代碼
//透明度alpha
ObjectAnimator alphaAni = ObjectAnimator.ofFloat(v,"alpha",1,0,1,0);
alphaAni.setDuration(1000);
alphaAni.start();
//旋轉(zhuǎn)
test.setPivotX(0);
test.setPivotY(y);
ObjectAnimator animatorr = ObjectAnimator.ofFloat(test, "rotation", 43);
animatorr.setDuration(1000);
animatorr.start();
//縮放
ObjectAnimator scaleAniX = ObjectAnimator.ofFloat(v,"scaleX",1f,1.1f,1f,1.1f,1f);
scaleAniX.setDuration(1000);
// scaleAniX.setRepeatCount(-1);
scaleAniX.setRepeatMode(ValueAnimator.REVERSE);
scaleAniX.start();
ObjectAnimator scaleAniY = ObjectAnimator.ofFloat(v,"scaleY",1f,1.1f,1f,1.1f,1f);
scaleAniY.setDuration(1000);
// scaleAniY.setRepeatCount(-1);
scaleAniY.setRepeatMode(ValueAnimator.REVERSE);
scaleAniY.start();
//with 同時(shí)執(zhí)行
//before 前面執(zhí)行
//after 后面執(zhí)行
//playTogether 同時(shí)執(zhí)行
//playSequentially 順序執(zhí)行
AnimatorSet aset = new AnimatorSet();
// aset.playTogether(scaleAniX,scaleAniY);
aset.play(scaleAniX).with(scaleAniY);
aset.start();
//移動(dòng)
ObjectAnimator transAni = ObjectAnimator.ofFloat(v,"translationX",v.getTranslationX()+100);
transAni.setDuration(1000);
transAni.start();
test為需要設(shè)置動(dòng)畫(huà)的控件
setPivotX和setPiovotY為動(dòng)畫(huà)的起始點(diǎn)
ObjectAnimator.ofFloat()括號(hào)中的參數(shù):
第一個(gè)參數(shù)绢慢,要實(shí)現(xiàn)動(dòng)畫(huà)的控件id
第二個(gè)參數(shù),要實(shí)現(xiàn)的動(dòng)畫(huà)屬性洛波,以下列出6種:
propertyName | 詳細(xì)作用 |
---|---|
alpha | 實(shí)現(xiàn)漸變效果 |
rotation | 實(shí)現(xiàn)旋轉(zhuǎn)旋轉(zhuǎn)效果 |
translationX | 實(shí)現(xiàn)水平移動(dòng)效果(左或右移動(dòng)) |
translationY | 實(shí)現(xiàn)縱向移動(dòng)效果(向上或者向下移動(dòng)) |
scaleX | 實(shí)現(xiàn)軸X縮放效果(放大或者縮小) |
scaleY | 實(shí)現(xiàn)軸Y縮放效果(放大或者縮小) |
后面為動(dòng)畫(huà)的值