Android5.0新特性之——控制項移動動畫(初級)

來源:互聯網
上載者:User

最近開發,UI大牛們設計了好多很炫酷吊炸天的動畫,不由得重新學習了一下5.0的ObjectAnimator動畫。

ObjectAnimator動畫的原理,通過反射控制項的setXXX方法,改變控制項的實際屬性值,來達到控制項狀態改變的動畫效果。

首先話不多說,先上。

我們先介紹幾個示範效果中用到的ObjectAnimator的方法

我這裡只針對ofInt()和ofFlot方法進行說明,其他的方法原理類似,這裡不做過多說明。

首先是第一個字型變色的效果。這裡用的是ofInt方法。代碼比較簡單:

          //設定色值                ObjectAnimator textColorAnim = ObjectAnimator.ofInt(view, "textColor", 0xff000000, 0xff0000ff, 0xff00ff00);                //設定動畫時間                textColorAnim.setDuration(3000);                //設定重複模式                textColorAnim.setRepeatMode(ValueAnimator.REVERSE);                textColorAnim.start();

這裡需要說明一點,我定義的view,是Button類型的控制項,所以裡面是有setTextColor這個屬性的。其中可以看出我設定的是黑、藍、綠三個顏色。但是我的是有很多種顏色的變化,這是因為在從藍色到綠色進行過度的時候,中間做了補間色的轉變。具體的可以百度一下色盤。

第二個我們說一下ofFloat()方法,原理依然是設定控制項,通過反射到控制項的setXXX方法,對控制項的屬性變更。下面上代碼:

ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(btnRotationX, "rotationX", 0, 360);objectAnimator.setDuration(3000);objectAnimator.start();

這裡說明一下,首先,在華為mate8和mate7系統下,控制項的setRotationX方法和setRotationY這兩個方法調用,會有問題。一旦調用,就會出現控制項消失的情況。這裡是華為系統的問題。不做過多的介紹。也就是如果在華為mate8和mate7系統下,調用這個動畫,展示動畫的控制項,就會出現消失的問題。所以這裡慎用!!!!!

 

 

最後說一個進階用法,自訂控制項的動畫效果。也就是中的最後一個效果。

直接貼代碼:

首先是自訂控制項CustomView(這裡為了節省篇幅,構造方法沒有粘貼)

public class CustomView extends android.support.v7.widget.AppCompatTextView {    private float redR=0;    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        Paint paint = new Paint();        paint.setColor(Color.RED);        paint.setStyle(Paint.Style.FILL);        paint.setAntiAlias(true);        canvas.drawCircle(200,20,redR, paint);    }    public void setRedR(float redR) {        this.redR = redR;
     //強制重新整理頁面 invalidate(); }}

布局檔案:

就不貼代碼了,不同的目錄下,控制項的引用方式也是不一樣的。這裡提醒一下,記得寫上控制項的寬高,我寫的高是100dp,寬是全屏。

動畫代碼:

        ObjectAnimator redR = ObjectAnimator.ofFloat(custom, "redR", 0, 100);        redR.setDuration(3000);        redR.setRepeatCount(ValueAnimator.INFINITE);        redR.setRepeatMode(ValueAnimator.REVERSE);        redR.start();

自訂控制項,就是通過映射custom的setRedR方法,進行動態更改custom的屬性值。

 

如有不足之處,請各位大牛進行指導

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.