Android動(dòng)畫之視圖動(dòng)畫的缺點(diǎn)和屬性動(dòng)畫的引入

1視圖動(dòng)畫添加監(jiān)聽

translate 動(dòng)畫

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="-300"
    android:toXDelta="500"
    android:fromYDelta="-300"
    android:toYDelta="1000"
    android:duration="3000"
    android:fillAfter="true">
</translate>

首先給控件添加點(diǎn)擊事件:

imageView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(Main4Activity.this,"點(diǎn)擊了控件",Toast.LENGTH_SHORT).show();
    }
});

Animation可以添加對(duì)動(dòng)畫的監(jiān)聽,可以監(jiān)聽動(dòng)畫的開始,結(jié)束,重復(fù)。
添加動(dòng)畫監(jiān)聽

mTranslateAnimation.setAnimationListener(new Animation.AnimationListener() {
    @Override
    public void onAnimationStart(Animation animation) {
    //動(dòng)畫開始
    }
    @Override
    public void onAnimationEnd(Animation animation) {
    //動(dòng)畫結(jié)束
    }
    @Override
    public void onAnimationRepeat(Animation animation) {
    //動(dòng)畫重復(fù)
    }
});
image

從效果圖可以看出,ImageView添加了點(diǎn)擊事件,ImageView執(zhí)行動(dòng)畫之后改變了自身的位置,但是再次點(diǎn)擊ImageView點(diǎn)擊事件卻沒(méi)有執(zhí)行,點(diǎn)擊ImageView初始的位置卻觸發(fā)了點(diǎn)擊事件。

還有大家有沒(méi)有發(fā)現(xiàn)一個(gè)問(wèn)題,動(dòng)畫開始之后如何運(yùn)行,我們是沒(méi)法干涉的,只是知道動(dòng)畫開始執(zhí)行,動(dòng)畫執(zhí)行結(jié)束,動(dòng)畫重復(fù)執(zhí)行。

2視圖動(dòng)畫局限

視圖動(dòng)畫的局限性:

  • 只能作用于view,但有時(shí)需求不是對(duì)于整個(gè)view的,而只是對(duì)view的某個(gè)屬性的,例如顏色的變化,也無(wú)法對(duì)非View的對(duì)象進(jìn)行動(dòng)畫處理。

  • 沒(méi)有改變view的屬性,只改變了view的視覺(jué)效果而已,只是修改了視圖繪制的地方,而沒(méi)有改變視圖的本身。

  • 動(dòng)畫效果固定,動(dòng)畫類型只有四種,縮放,平移,旋轉(zhuǎn),透明度的基本動(dòng)畫,無(wú)法對(duì)其他屬性進(jìn)行操作。

  • 動(dòng)畫雖然可以添加監(jiān)聽,但是動(dòng)畫開始后無(wú)法對(duì)動(dòng)畫的執(zhí)行過(guò)程進(jìn)行控制。

3 屬性動(dòng)畫的引入

屬性動(dòng)畫在API11以后出現(xiàn),是對(duì)Android動(dòng)畫的重要改進(jìn),彌補(bǔ)了視圖動(dòng)畫存在的問(wèn)題。

屬性動(dòng)畫通過(guò)改變View的屬性完成動(dòng)畫,利用setxxx()和getxxx()函數(shù)可以對(duì)Object的任意屬性改變,從而可以實(shí)現(xiàn)視圖動(dòng)畫實(shí)現(xiàn)不了的功能??梢酝ㄟ^(guò)在object中添加屬性的set函數(shù),在ondraw方法中操作屬性就可以完成動(dòng)畫屬性動(dòng)畫還支持監(jiān)聽動(dòng)畫過(guò)程,在動(dòng)畫過(guò)程中自己操作控件進(jìn)行改變。

屬性動(dòng)畫主要依靠ValueAnimator 和 ObjectAnimator 這兩個(gè)類。

總結(jié)如下:
(1)屬性動(dòng)畫比視圖動(dòng)畫更強(qiáng)大,不但可以實(shí)現(xiàn)縮放、平移等操作,還可以自己定義動(dòng)畫效果。
(2)屬性動(dòng)畫不但可以作用于View,還能作用于數(shù)值和Object。
(3)屬性動(dòng)畫利用屬性的改變實(shí)現(xiàn)動(dòng)畫,而視圖動(dòng)畫僅僅改變了view的大小位置,但view真正的屬性沒(méi)有改變。
(4)屬性動(dòng)畫監(jiān)聽動(dòng)畫的過(guò)程,在動(dòng)畫過(guò)程中或完成后做響應(yīng)的動(dòng)作,動(dòng)畫開始后,通過(guò)監(jiān)聽也可以改變動(dòng)畫的效果。

Animation動(dòng)畫概述和執(zhí)行原理
Android動(dòng)畫之補(bǔ)間動(dòng)畫TweenAnimation
Android動(dòng)畫之逐幀動(dòng)畫FrameAnimation
Android動(dòng)畫之插值器簡(jiǎn)介和系統(tǒng)默認(rèn)插值器
Android動(dòng)畫之插值器Interpolator自定義
Android動(dòng)畫之視圖動(dòng)畫的缺點(diǎn)和屬性動(dòng)畫的引入
Android動(dòng)畫之ValueAnimator用法和自定義估值器
Android動(dòng)畫之ObjectAnimator實(shí)現(xiàn)補(bǔ)間動(dòng)畫和ObjectAnimator自定義屬性
Android動(dòng)畫之ObjectAnimator中ofXX函數(shù)全解析-自定義Property,TypeConverter,TypeEvaluator
Android動(dòng)畫之AnimatorSet聯(lián)合動(dòng)畫用法
Android動(dòng)畫之LayoutTransition布局動(dòng)畫
Android動(dòng)畫之共享元素動(dòng)畫
Android動(dòng)畫之ViewPropertyAnimator(專用于view的屬性動(dòng)畫)
Android動(dòng)畫之Activity切換動(dòng)畫overridePendingTransition實(shí)現(xiàn)和Theme Xml方式實(shí)現(xiàn)
Android動(dòng)畫之ActivityOptionsCompat概述
Android動(dòng)畫之場(chǎng)景變換Transition動(dòng)畫的使用
Android動(dòng)畫之Transition和TransitionManager使用
Android動(dòng)畫之圓形揭露動(dòng)畫Circular Reveal
Android 動(dòng)畫之 LayoutAnimation 動(dòng)畫
Android動(dòng)畫之視圖動(dòng)畫的缺點(diǎn)和屬性動(dòng)畫的引入

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 【Android 動(dòng)畫】 動(dòng)畫分類補(bǔ)間動(dòng)畫(Tween動(dòng)畫)幀動(dòng)畫(Frame 動(dòng)畫)屬性動(dòng)畫(Property ...
    Rtia閱讀 6,390評(píng)論 1 38
  • 1 背景 不能只分析源碼呀,分析的同時(shí)也要整理歸納基礎(chǔ)知識(shí),剛好有人微博私信讓全面說(shuō)說(shuō)Android的動(dòng)畫,所以今...
    未聞椛洺閱讀 2,852評(píng)論 0 10
  • 提起動(dòng)畫首先想到的是動(dòng)畫片,童年最愛(ài)的黑貓警長(zhǎng),葫蘆娃,邋遢大王,大臉貓和藍(lán)皮鼠,四驅(qū)兄弟,七龍珠等等,當(dāng)時(shí)覺(jué)著好...
    sliencexiu閱讀 2,972評(píng)論 0 3
  • 轉(zhuǎn)載一篇高質(zhì)量博文,原地址請(qǐng)戳這里轉(zhuǎn)載下來(lái)方便今后查看。1 背景不能只分析源碼呀,分析的同時(shí)也要整理歸納基礎(chǔ)知識(shí),...
    Elder閱讀 2,009評(píng)論 0 24
  • 青春就應(yīng)該負(fù)重前行,而不是讓別人替你負(fù)重前行?!吨辽僮龅讲灰屵@個(gè)世界改變》
    鄧華強(qiáng)閱讀 102評(píng)論 0 1

友情鏈接更多精彩內(nèi)容