關於github上開源nineoldandroids相容動畫的筆記

來源:互聯網
上載者:User

標籤:android   style   blog   http   io   ar   java   sp   div   

github上面有個例子很好的列舉了NineOldAndroids相容動畫的用法。下載了下來然後運行測試了下:


因為要引用nineoldandroids的項目,我這裡直接把它的原始碼拷貝進去了,用做測試。

android 11版本也有ObjectAnimator動畫屬性,但是不能相容10版本甚至8的版本號碼,國內這個版本號碼的手機份額還是不小的。所以相容也必須只有用這個開源的了。

 static {        PROXY_PROPERTIES.put("alpha", PreHoneycombCompat.ALPHA);        PROXY_PROPERTIES.put("pivotX", PreHoneycombCompat.PIVOT_X);        PROXY_PROPERTIES.put("pivotY", PreHoneycombCompat.PIVOT_Y);        PROXY_PROPERTIES.put("translationX", PreHoneycombCompat.TRANSLATION_X);        PROXY_PROPERTIES.put("translationY", PreHoneycombCompat.TRANSLATION_Y);        PROXY_PROPERTIES.put("rotation", PreHoneycombCompat.ROTATION);        PROXY_PROPERTIES.put("rotationX", PreHoneycombCompat.ROTATION_X);        PROXY_PROPERTIES.put("rotationY", PreHoneycombCompat.ROTATION_Y);        PROXY_PROPERTIES.put("scaleX", PreHoneycombCompat.SCALE_X);        PROXY_PROPERTIES.put("scaleY", PreHoneycombCompat.SCALE_Y);        PROXY_PROPERTIES.put("scrollX", PreHoneycombCompat.SCROLL_X);        PROXY_PROPERTIES.put("scrollY", PreHoneycombCompat.SCROLL_Y);        PROXY_PROPERTIES.put("x", PreHoneycombCompat.X);        PROXY_PROPERTIES.put("y", PreHoneycombCompat.Y);    }

支援的動畫屬性名稱有上面那些

支援上下移動的動畫執行個體:

@Overrideprotected void setupAnimation(View view) {// TODO Auto-generated method stub//getAnimatorSet().playTogether(//ObjectAnimator.ofFloat(view, "translationY", 0,-300).setDuration(500),//ObjectAnimator.ofFloat(view, "translationY", -300,300).setDuration(900)//);//getAnimatorSet().play(ObjectAnimator.ofFloat(view, "translationY", 0,-300).setDuration(500));getAnimatorSet().playSequentially(ObjectAnimator.ofFloat(view, "translationY", 0,-100).setDuration(400),ObjectAnimator.ofFloat(view, "translationY", -100,100).setDuration(800),ObjectAnimator.ofFloat(view, "translationY", 100,-100).setDuration(800),ObjectAnimator.ofFloat(view, "translationY", -100,100).setDuration(800),ObjectAnimator.ofFloat(view, "translationY", 100,0).setDuration(400));}

也可以用下面的方法:

  @Override    protected void setupAnimation(View view) {        getAnimatorSet().playTogether(                ObjectAnimator.ofFloat(view, "translationY", 0,-100,-200,-300,-200,-100,0,100,200,300,200,100,0,                -100,-200,-300,-200,-100,0,100,200,300,200,100, 0).setDuration(4000),                ObjectAnimator.ofFloat(view, "alpha", 1, 1).setDuration(mDuration*3/2)        );    }

這裡的效果和上面的效果差不多,只不過是這裡分割了整段距離,可以把時間平分,

也就是用

playTogether這個方法也可以實現<pre name="code" class="java">playSequentially這個方法的效果。(播放動畫隊列,很好理解)


 title = (TextView) findViewById(R.id.title);        final BaseEffects animator = Effectstype.Slidetogether.getAnimator();        final Handler handler = new Handler(new Handler.Callback() {@Overridepublic boolean handleMessage(Message arg0) {// TODO Auto-generated method stubanimator.start(title);return true;}});        new Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubwhile(true){try {Thread.sleep(8000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}handler.sendEmptyMessage(0);}}}).start();

直接對單個View播放動畫,如。


筆記先作到這裡,如果有錯誤的,還請各位大牛批評指正。

Write the code,Change the world!



複製去Google翻譯翻譯結果playSequentially

關於github上開源nineoldandroids相容動畫的筆記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.