关于github上开源nineoldandroids兼容动画的笔记
生活随笔
收集整理的這篇文章主要介紹了
关于github上开源nineoldandroids兼容动画的笔记
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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));}
也能夠用以下的方法:
@Overrideprotected 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!
轉載于:https://www.cnblogs.com/wzjhoutai/p/6707275.html
總結
以上是生活随笔為你收集整理的关于github上开源nineoldandroids兼容动画的笔记的全部內容,希望文章能夠幫你解決所遇到的問題。