1視圖動(dòng)畫(huà)添加監(jiān)聽(tīng)
translate 動(dòng)畫(huà)
<?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)畫(huà)的監(jiān)聽(tīng),可以監(jiān)聽(tīng)動(dòng)畫(huà)的開(kāi)始刻撒,結(jié)束舶衬,重復(fù)。
添加動(dòng)畫(huà)監(jiān)聽(tīng)
mTranslateAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
//動(dòng)畫(huà)開(kāi)始
}
@Override
public void onAnimationEnd(Animation animation) {
//動(dòng)畫(huà)結(jié)束
}
@Override
public void onAnimationRepeat(Animation animation) {
//動(dòng)畫(huà)重復(fù)
}
});
從效果圖可以看出长赞,ImageView添加了點(diǎn)擊事件晦攒,ImageView執(zhí)行動(dòng)畫(huà)之后改變了自身的位置,但是再次點(diǎn)擊ImageView點(diǎn)擊事件卻沒(méi)有執(zhí)行得哆,點(diǎn)擊ImageView初始的位置卻觸發(fā)了點(diǎn)擊事件脯颜。
還有大家有沒(méi)有發(fā)現(xiàn)一個(gè)問(wèn)題,動(dòng)畫(huà)開(kāi)始之后如何運(yùn)行贩据,我們是沒(méi)法干涉的栋操,只是知道動(dòng)畫(huà)開(kāi)始執(zhí)行,動(dòng)畫(huà)執(zhí)行結(jié)束饱亮,動(dòng)畫(huà)重復(fù)執(zhí)行矾芙。
2視圖動(dòng)畫(huà)局限
視圖動(dòng)畫(huà)的局限性:
只能作用于view,但有時(shí)需求不是對(duì)于整個(gè)view的,而只是對(duì)view的某個(gè)屬性的近上,例如顏色的變化蠕啄,也無(wú)法對(duì)非View的對(duì)象進(jìn)行動(dòng)畫(huà)處理。
沒(méi)有改變view的屬性,只改變了view的視覺(jué)效果而已歼跟,只是修改了視圖繪制的地方和媳,而沒(méi)有改變視圖的本身。
動(dòng)畫(huà)效果固定哈街,動(dòng)畫(huà)類(lèi)型只有四種留瞳,縮放,平移骚秦,旋轉(zhuǎn)她倘,透明度的基本動(dòng)畫(huà),無(wú)法對(duì)其他屬性進(jìn)行操作作箍。
動(dòng)畫(huà)雖然可以添加監(jiān)聽(tīng)硬梁,但是動(dòng)畫(huà)開(kāi)始后無(wú)法對(duì)動(dòng)畫(huà)的執(zhí)行過(guò)程進(jìn)行控制。
3 屬性動(dòng)畫(huà)的引入
屬性動(dòng)畫(huà)在API11以后出現(xiàn)胞得,是對(duì)Android動(dòng)畫(huà)的重要改進(jìn)荧止,彌補(bǔ)了視圖動(dòng)畫(huà)存在的問(wèn)題。
屬性動(dòng)畫(huà)通過(guò)改變View的屬性完成動(dòng)畫(huà)阶剑,利用setxxx()和getxxx()函數(shù)可以對(duì)Object的任意屬性改變跃巡,從而可以實(shí)現(xiàn)視圖動(dòng)畫(huà)實(shí)現(xiàn)不了的功能∧脸睿可以通過(guò)在object中添加屬性的set函數(shù)素邪,在ondraw方法中操作屬性就可以完成動(dòng)畫(huà)屬性動(dòng)畫(huà)還支持監(jiān)聽(tīng)動(dòng)畫(huà)過(guò)程,在動(dòng)畫(huà)過(guò)程中自己操作控件進(jìn)行改變猪半。
屬性動(dòng)畫(huà)主要依靠ValueAnimator 和 ObjectAnimator 這兩個(gè)類(lèi)兔朦。
總結(jié)如下:
(1)屬性動(dòng)畫(huà)比視圖動(dòng)畫(huà)更強(qiáng)大,不但可以實(shí)現(xiàn)縮放磨确、平移等操作沽甥,還可以自己定義動(dòng)畫(huà)效果。
(2)屬性動(dòng)畫(huà)不但可以作用于View俐填,還能作用于數(shù)值和Object安接。
(3)屬性動(dòng)畫(huà)利用屬性的改變實(shí)現(xiàn)動(dòng)畫(huà)翔忽,而視圖動(dòng)畫(huà)僅僅改變了view的大小位置英融,但view真正的屬性沒(méi)有改變。
(4)屬性動(dòng)畫(huà)監(jiān)聽(tīng)動(dòng)畫(huà)的過(guò)程歇式,在動(dòng)畫(huà)過(guò)程中或完成后做響應(yīng)的動(dòng)作驶悟,動(dòng)畫(huà)開(kāi)始后,通過(guò)監(jiān)聽(tīng)也可以改變動(dòng)畫(huà)的效果材失。
Animation動(dòng)畫(huà)概述和執(zhí)行原理
Android動(dòng)畫(huà)之補(bǔ)間動(dòng)畫(huà)TweenAnimation
Android動(dòng)畫(huà)之逐幀動(dòng)畫(huà)FrameAnimation
Android動(dòng)畫(huà)之插值器簡(jiǎn)介和系統(tǒng)默認(rèn)插值器
Android動(dòng)畫(huà)之插值器Interpolator自定義
Android動(dòng)畫(huà)之視圖動(dòng)畫(huà)的缺點(diǎn)和屬性動(dòng)畫(huà)的引入
Android動(dòng)畫(huà)之ValueAnimator用法和自定義估值器
Android動(dòng)畫(huà)之ObjectAnimator實(shí)現(xiàn)補(bǔ)間動(dòng)畫(huà)和ObjectAnimator自定義屬性
Android動(dòng)畫(huà)之ObjectAnimator中ofXX函數(shù)全解析-自定義Property痕鳍,TypeConverter,TypeEvaluator
Android動(dòng)畫(huà)之AnimatorSet聯(lián)合動(dòng)畫(huà)用法
Android動(dòng)畫(huà)之LayoutTransition布局動(dòng)畫(huà)
Android動(dòng)畫(huà)之共享元素動(dòng)畫(huà)
Android動(dòng)畫(huà)之ViewPropertyAnimator(專(zhuān)用于view的屬性動(dòng)畫(huà))
Android動(dòng)畫(huà)之Activity切換動(dòng)畫(huà)overridePendingTransition實(shí)現(xiàn)和Theme Xml方式實(shí)現(xiàn)
Android動(dòng)畫(huà)之ActivityOptionsCompat概述
Android動(dòng)畫(huà)之場(chǎng)景變換Transition動(dòng)畫(huà)的使用
Android動(dòng)畫(huà)之Transition和TransitionManager使用
Android動(dòng)畫(huà)之圓形揭露動(dòng)畫(huà)Circular Reveal
Android 動(dòng)畫(huà)之 LayoutAnimation 動(dòng)畫(huà)
Android動(dòng)畫(huà)之視圖動(dòng)畫(huà)的缺點(diǎn)和屬性動(dòng)畫(huà)的引入