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ù)
}
});

從效果圖可以看出,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)畫的引入