android 動畫 屬性動畫 ValueAnimator
屬性動畫2 Property Animation
ValueAnimator(差值動畫)
單純從字面上理解的話ObjectAnimator作用於某個實際的物件,而ValueAnimator是ObjectAnimator的父類,它繼承自抽象類Animator,它作用於一個值,將其由一個值變化為另外一個值,然後根據值的變化,按照一定的規則,動態修改View的屬性,比如View的位置、透明度、旋轉角度、大小等,即可完成了動畫的效果。
/*
這裡通過ofFloat()方法構造一個ValueAnimator例項,除此之外還提供了
其他函式ofInt()、ofObject()、ofPropertyValuesHolder() 函式,
api 21之後又提供了ofArgb(),每個函式都是可以傳入多個改變值。
*/
public void initAnim() {
ValueAnimator valueAnimator = ValueAnimator.ofFloat(0f, 126512.36f);
valueAnimator.setDuration(2000);
valueAnimator.setInterpolator(new LinearInterpolator());
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float money = (float) animation.getAnimatedValue();
mTextView.setText(String.format("%.2f", money));
}
});
valueAnimator.start();
}
Interpolator
//如何自定義一個插值器?舉例:我們實現一個先減速後加速插值器,程式碼如下
public class DecelerateAccelerateInterpolator implements Interpolator {
@Override
public float getInterpolation(float input) {
float result;
if (input <= 0.5f) {
result = (float) (Math.sin(Math.PI * input)) / 2.0f;
} else {
result = (float) (2 - Math.sin(Math.PI * input)) / 2.0f;
}
return result;
}
}
TypeEvaluator
//TypeEvaluator(估值器)
/*
TypeEvaluator用於根據當前屬性改變的百分比來計算改變後的屬性值,系統提供瞭如下幾種估值器
IntEvaluator 針對整型屬性
IntArrayEvaluator 針對整型屬性集合
FloatEvaluator 針對浮點型屬性
FloatArrayEvaluator 針對浮點型屬性集合
ArgbEvaluator 針對Color屬性
RectEvaluator 針對Rect屬性
PointFEvaluator 針對PointF屬性
*/
// 介面提供了evaluate(float fraction, T startValue, T endValue);
// 動畫在執行過程中Interpolator自動計算出動畫執行的百分比fraction,
// 然後TypeEvaluator根據fraction計算出當前動畫的屬性值。
public class FloatEvaluator implements TypeEvaluator<Number> {
public Float evaluate(float fraction, Number startValue, Number endValue) {
float startFloat = startValue.floatValue();
return startFloat + fraction * (endValue.floatValue() - startFloat);
}
}
自定義TypeEvaLuator
//如何自定義TypeEvaLuator?比如我們要實現一個錢的增加,字型顏色越紅的動畫,
// 我們現在都知道可以使用ofArgb(),但是ofArgb()需要api 21以上才能使用,
// 所以需要我們自定義一個ArgbEvaLuator,這裡為了演示自定義
// TypeEvaluator直接把api 21中提供的ArgbEvaluator原始碼拿來使用
public class TextArgbEvaluator implements TypeEvaluator {
public Object evaluate(float fraction, Object startValue, Object endValue) {
int startInt = (Integer) startValue;
int startA = (startInt >> 24) & 0xff;
int startR = (startInt >> 16) & 0xff;
int startG = (startInt >> 8) & 0xff;
int startB = startInt & 0xff;
int endInt = (Integer) endValue;
int endA = (endInt >> 24) & 0xff;
int endR = (endInt >> 16) & 0xff;
int endG = (endInt >> 8) & 0xff;
int endB = endInt & 0xff;
return (int) ((startA + (int) (fraction * (endA - startA))) << 24) |
(int) ((startR + (int) (fraction * (endR - startR))) << 16) |
(int) ((startG + (int) (fraction * (endG - startG))) << 8) |
(int) ((startB + (int) (fraction * (endB - startB))));
}
}
呼叫方式
//呼叫方式:
public void ss() {
AnimatorSet animatorSet = new AnimatorSet();
ValueAnimator valueAnimator = ValueAnimator.ofFloat(0f, 126512.36f);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float money = (float) animation.getAnimatedValue();
Log.e("Interpolator", "money---->" + money);
mTextView.setText(String.format("%.2f", money));
}
});
int startColor = Color.parseColor("#FCA3AB");
int endColor = Color.parseColor("#FB0435");
ValueAnimator colorAnimator = ValueAnimator.ofObject(new TextArgbEvaluator(), startColor, endColor);
colorAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
int color = (int) animation.getAnimatedValue();
Log.e("Interpolator", "color---->" + color);
mTextView.setTextColor(color);
}
});
animatorSet.playTogether(valueAnimator, colorAnimator);
animatorSet.setDuration(5000);
animatorSet.setInterpolator(new LinearInterpolator());
animatorSet.start();
}
相關推薦
android 動畫 屬性動畫 ValueAnimator
屬性動畫2 Property Animation ValueAnimator(差值動畫) 單純從字面上理解的話ObjectAnimator作用於某個實際的物件,而ValueAnimator是Obje
android中屬性動畫 ObjectionAnimation
關於動畫: android中動畫包括 View Animation、Drawable Animation和屬性動畫Property Animation ●
【Android】屬性動畫(基本用法)
1、前言 在我們體驗一款APP時,炫酷的動畫往往能讓使用者體驗大幅度提升。想當年我剛學Android的時候,無意中看到蘑菇街購物車的動畫效果,把我給激動得,非要在自己的APP中加入那動畫,記得當時用費了好大的勁...不提了,說多了都是淚... 先了解下,目前可以實現動畫的
Android Interpolator屬性動畫解析
Interpolator的用法 Interpolator這個東西很難進行翻譯,直譯過來的話是補間器的意思,它的主要作用是可以控制動畫的變化速率,比如去實現一種非線性運動的動畫效果。那麼什麼叫做非線性運動的動畫效果呢?就是說動畫改變的速率不是一成不變的,像加速運
android初識屬性動畫---Interpolator插值器
nterpolator屬性是Animation類的一個XML屬性,所以alpha、scale、rotate、translate、set都會繼承得到這個屬性。Interpolator被譯為插值器,其實我不大能從字面上理解為什麼會這樣譯,其實他是一個指定動畫如何變化
Android中屬性動畫和補間動畫的區別
屬性動畫和補間動畫的區別是,補間動畫只是表面上實現了平移,旋轉,漸變,縮放,實際上屬性值不變; 屬性動畫實現平移,旋轉,漸變,縮放後,屬性值變了 下面就是測試的例子 程式碼: package com.atguigu.propertyanimation; impor
android中屬性動畫的bug,以及ViewCompat
ViewCompat這個類,是andorid對於動畫類操作的相容類,今天寫了一個側拉框,出現的一個bug 今天一不小心遇見一個bug,這個bug如下 正常情況下慢慢畫動畫可以用,但是快速化,動畫就停止了, 今天先貼程式碼,明天貼圖 final CycleInte
Android動畫--屬性動畫總結(一)
屬性動畫是API 11 才引入的新特性,屬性動畫彌補了view動畫的一些不足。屬性動畫可以針對屬性進行動畫而不僅僅是View。 但並不是傳遞任何的屬性都能有效果。屬性動畫要求做動畫的物件提供該屬性的get和set方法,屬性動畫根據外界傳遞的該屬性的初始值和最終值,以動畫的效果多次呼叫set
Android 安卓動畫 屬性動畫
目錄 引入 佈局檔案 篇 程式碼邏輯 篇 引入 屬性動畫的出現,彌補了補間動畫的不足之處,補間動畫,只是改變了表面上的東西,但是其中屬性並未改變,而屬性動畫相反,改變了表面上的東西,並且也更改了其屬性。 類:ObjectAnimator 用於操作屬性動畫的類
展開拉伸動畫---屬性動畫
最近有一個需求是一個介面上點選一個按鈕,開啟一個需要顯示的View,然後再次點選隱藏,先看效果圖 展開前的介面 展開後的介面 實現原理,就是在佈局檔案中先把,需要顯示出來的View寫出來,然後再用屬性動畫動態的控制高度,從而實現點選展開和關閉的動畫
Android屬性動畫完全解析 中 ,ValueAnimator和ObjectAnimator的高階用法
轉載請註明出處:http://blog.csdn.net/guolin_blog/article/details/43536355 大家好,在上一篇文章當中,我們學習了Android屬性動畫的基本用法,當然也是最常用的一些用法,這些用法足以覆蓋我們平時大多情況下的動畫需求了。但是,正如上篇文章當中所
Android屬性動畫完全解析(中),ValueAnimator和ObjectAnimator的高階用法
大家好,在上一篇文章當中,我們學習了Android屬性動畫的基本用法,當然也是最常用的一些用法,這些用法足以覆蓋我們平時大多情況下的動畫需求了。但是,正如上篇文章當中所說到的,屬性動畫對補間動畫進行了很大幅度的改進,之前補間動畫可以做到的屬性動畫也能做到,補間動畫做不到的現在
Android 屬性動畫ObjectAnimator和ValueAnimator講解
區別: ObjectAnimator 是直接對某個view進行更改。 ValueAnimator 根據 TimeInterpolator 在不斷產生相應的資料,來傳進view ,view自己做改變。 介紹: 1.屬性動畫是通過改變某個控制元件的屬性值來創造動畫,比如在規定的時間
Android屬性動畫(ObjectAnimator、PropertyValuesHolder、ValueAnimator、AnimatorSet)
Android屬性動畫 在Animator 框架中,使用最多的就是AnimatorSet和ObjectAnimator配合,使用ObjectAnimator進行更加精細的控制,只控制一個物件的一個屬性值,爾斯用多個ObjectAnimator組合到Anim
Android Animation、ObjectAnimator與ValueAnimator實現檢視動畫和屬性動畫
一、檢視動畫 檢視動畫比較簡單,它提供了AlphaAnimation、RotateAnimation、TranslateAnimation、ScaleAnimation四種動畫方式。 檢視動畫一個非常大的缺陷就是不具有互動性,當一個View發生檢視動畫後,其
Android屬性動畫完全解析 ValueAnimator
android 屬性動畫完全解析,初識屬性動畫的基本用法:在手機上去實現一些動畫效果算是件比較炫酷的事情,因此Android系統在一開始的時候就給我們提供了兩種實現動畫效果的方式,逐幀動畫(frame-by-frame animation)和補間動畫(tweened anim
Android 屬性動畫框架 ObjectAnimator、ValueAnimator ,這一篇就夠了
前言 我們都知道 Android 自帶了 Roate Scale Translate Alpha 多種框架動畫,我們可以通過她們實現豐富的動畫效果,但是這些寬家動畫卻有一個致命的弱點,它們只是改變了 View 顯示的大小,而沒有改變 View 的響應區域。這時以 ObjectAnimator、ValueAni
Android屬性動畫完全解析(上),初識屬性動畫的基本用法
fcm 操作 fad 擴展性 改變 內部使用 如果 轉載 @override 轉載請註明出處:http://blog.csdn.net/guolin_blog/article/details/43536355 在手機上去實現一些動畫效果算是件比較炫酷的事情,因此Andr
Android 屬性動畫(Property Animation) 全然解析 (上)
顏色 valid 全部 加速度 ext target ng- 點擊 save 轉載請標明出處:http://blog.csdn.net/lmj623565791/article/details/380674751、概述Android提供了幾種動畫類型:View Anima
Android圖文具體解釋屬性動畫
ref processor 拷貝 number name rup prop ren del Android中的動畫分為視圖動畫(View Animation)、屬性動畫(Property Animation)以及Drawable動畫。從Android 3