国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

使用動畫實現(xiàn)微信讀書的換一批效果(兩種方式)

2024-07-21 02:03:23
字體:
供稿:網(wǎng)友

先來看看微信讀書的效果

在這里插入圖片描述

實現(xiàn)思路

這個效果比較簡單,主要是旋轉(zhuǎn)view,然后在旋轉(zhuǎn)結(jié)束后更換view的背景,考慮到需要旋轉(zhuǎn)view,所以使用動畫來實現(xiàn)

兩種實現(xiàn)方式1.方式一 使用ObjectAnimator結(jié)合AnimatorSet

核心過程如下:

  • 創(chuàng)建布局,一個容器,四個view,過程簡單,這里不做介紹
  • 創(chuàng)建兩個list,一個用來存放動畫,一個用來存放view
  • 使用ObjectAnimator創(chuàng)建四個動畫,然后將動畫放到list中
  • 設(shè)置動畫監(jiān)聽,動畫結(jié)束時更換view背景

核心代碼如下:

public void startAnimation01(){  animators.clear();  //創(chuàng)建四個動畫,每個動畫逆時針旋轉(zhuǎn)180度  Animator animator01 = ObjectAnimator.ofFloat(imageView01,"RotationY",0,-180);  Animator animator02 = ObjectAnimator.ofFloat(imageView02,"RotationY",0,-180);  Animator animator03 = ObjectAnimator.ofFloat(imageView03,"RotationY",0,-180);  Animator animator04 = ObjectAnimator.ofFloat(imageView04,"RotationY",0,-180);  animators.add(animator01);  animators.add(animator02);  animators.add(animator03);  animators.add(animator04);  //循環(huán)中統(tǒng)一處理事件監(jiān)聽,動畫結(jié)束時更換每個view的背景  for(int i=0;i<animators.size();i++){   final int finalI = i;   animators.get(i).addListener(new Animator.AnimatorListener() {    @Override    public void onAnimationStart(Animator animation) {    }    @Override    public void onAnimationEnd(Animator animation) {     //更換背景     imageViews.get(finalI).setBackgroundColor(Color.parseColor("#FFAEB9"));    }    @Override    public void onAnimationCancel(Animator animation) {    }    @Override    public void onAnimationRepeat(Animator animation) {    }   });  }  AnimatorSet set = new AnimatorSet();  //集合中的動畫會順序執(zhí)行  set.playSequentially(animators);  set.setStartDelay(200);  set.setDuration(300);  set.start(); }

2. 方式二 使用ViewPropertyAnimator

上面的方法使用的ObjectAnimator來實現(xiàn),ObjectAnimator的缺點就是實現(xiàn)起來代碼量比較大,重復(fù)的東西比較多。ViewPropertyAnimator可以以少量代碼實現(xiàn)效果,簡介明了。

核心代碼如下:

public void startAnimation02(){  for (int i=0;i<animators01.size();i++){   final int finalI = i;   animators01.get(i).setListener(new Animator.AnimatorListener() {    @Override    public void onAnimationStart(Animator animation) {    }    @Override    public void onAnimationEnd(Animator animation) {     imageViews.get(finalI).setBackgroundColor(Color.parseColor("#FFAEB9"));    }    @Override    public void onAnimationCancel(Animator animation) {    }    @Override    public void onAnimationRepeat(Animator animation) {    }   });  } }

一開始使用的rotationY,但是rotationY從效果上看只能執(zhí)行一次(其實是每次都會執(zhí)行,只是沒有變化而已),而rotationYBy則可以重復(fù)多次執(zhí)行。其他屬性也是同樣的效果。

效果展示

在這里插入圖片描述

總結(jié)

到此這篇關(guān)于使用動畫實現(xiàn)微信讀書的換一批效果的文章就介紹到這了,更多相關(guān)微信讀書換一批內(nèi)容請搜索武林網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持武林網(wǎng)!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 屯门区| 吴旗县| 图木舒克市| 花垣县| 宁乡县| 九龙城区| 呼伦贝尔市| 绵阳市| 秦安县| 玛纳斯县| 林西县| 阿城市| 诏安县| 成都市| 福清市| 儋州市| 方正县| 永宁县| 长寿区| 鄱阳县| 屏东市| 即墨市| 东阳市| 龙陵县| 会昌县| 滨州市| 雷州市| 紫阳县| 三台县| 聊城市| 当阳市| 无棣县| 西乌珠穆沁旗| 潼关县| 云安县| 桐城市| 滕州市| 昌乐县| 江陵县| 明光市| 嵊州市|