<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Android仿今日頭條刷新vector動(dòng)畫

          共 15936字,需瀏覽 32分鐘

           ·

          2021-03-14 06:44

          一般的刷新動(dòng)畫是一個(gè)圈圈在轉(zhuǎn),而頭條的比較特殊,直接上寫好的效果圖:



          動(dòng)畫思路:


          整個(gè)view可以分為五個(gè)部分


              1、最外面的殼(不需要?jiǎng)赢嫞?/span>
              2、中間矩形框
              3、矩形框中的灰色矩形塊
              4、三根短線
              5、三根長線


          第一步:在drawable文件夾下新建名為refresh的vector文件:

          <vector xmlns:android="http://schemas.android.com/apk/res/android"    android:width="200dp"    android:height="200dp"    android:viewportWidth="200"    android:viewportHeight="200">    <!--外面大框-->    <path        android:name="out_rect"        android:pathData="M70,60                          L130,60                          Q140,60 140,70                          L140,130                          Q140,140 130,140                          L70,140                          Q60,140 60,130                          L60,70                          Q60,60 70,60"        android:strokeWidth="2"        android:strokeColor="#e5e5e5" />    <!--小長方形框-->    <path        android:name="middle_rect"        android:pathData="M71,75                          L100,75                          L100,95                          L72,95                          L72,75"        android:strokeWidth="2"        android:strokeColor="#e5e5e5" />    <!--里面的正方形-->    <path        android:name="inner_rect"        android:fillColor="#e5e5e5"        android:pathData="M73,76                          L99,76                          L99,94                          L73,94" />    <!--短線條-->    <path        android:name="short_lines"        android:pathData="M108,75                          L128,75                          M108,85                          L128,85                          M108,95                          L128,95"        android:strokeWidth="2"        android:strokeColor="#e5e5e5" />    <!--長線條-->    <path        android:name="long_lines"        android:pathData="                          M72,105                          L128,105                          M72,115                          L128,115                          M72,125                          L128,125"        android:strokeWidth="2"        android:strokeColor="#e5e5e5" /></vector>


          打開xml右邊的預(yù)覽,我們可以看到效果:




          第二步:在drawable文件夾下新建名為refresh_vector的animated-vector

          <?xml version="1.0" encoding="utf-8"?><animated-vector xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:drawable="@drawable/refresh"    tools:ignore="NewApi">    <target        android:name="middle_rect"        android:animation="@animator/anim_middle_rect" />
          <target android:name="short_lines" android:animation="@animator/anim_short_lines" />
          <target android:name="long_lines" android:animation="@animator/anim_long_lines" />
          <target android:name="inner_rect" android:animation="@animator/anim_inner_rect" />
          </animated-vector>


          這里需要注意幾點(diǎn):


          1、這里一定要引用上面的refresh文件

          android:drawable="@drawable/refresh"

          2、target標(biāo)簽下的name一定要和refresh中的path標(biāo)簽下的名字一致


          第三步:新建animator文件夾(不是anim),并在下面新建短線、長線、中間矩形框和里面矩形對應(yīng)的objectAnimator集合:


          anim_middle_rect.xml:

          <?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"    android:ordering="sequentially">    <!--中間長方形-->    <objectAnimator        android:duration="500"        android:interpolator="@android:interpolator/decelerate_cubic"        android:propertyName="pathData"        android:valueFrom="M71,75                          L100,75                          L100,95                          L72,95                          L72,75"        android:valueTo="M99,75                         L128,75                         L128,95                         L100,95                         L100,75"        android:valueType="pathType" />    <objectAnimator        android:duration="500"        android:interpolator="@android:interpolator/decelerate_cubic"        android:propertyName="pathData"        android:valueFrom="M99,75                         L128,75                         L128,95                         L100,95                         L100,75"        android:valueTo="M99,105                         L128,105                         L128,125                         L100,125                         L100,105"        android:valueType="pathType" />    <objectAnimator        android:duration="500"        android:interpolator="@android:interpolator/decelerate_cubic"        android:propertyName="pathData"        android:valueFrom="M99,105                         L128,105                         L128,125                         L100,125                         L100,105"        android:valueTo="M71,105                         L100,105                         L100,125                         L72,125                         L72,105"        android:valueType="pathType" />    <objectAnimator        android:duration="500"        android:interpolator="@android:interpolator/decelerate_cubic"        android:propertyName="pathData"        android:valueFrom="M71,105                         L100,105                         L100,125                         L72,125                         L72,105"        android:valueTo="M71,75                          L100,75                          L100,95                          L72,95                          L72,75"        android:valueType="pathType" />        </set>


          anim_short_lines.xml:

          <?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"    android:ordering="sequentially">    <!--起點(diǎn)為短線-->    <objectAnimator        android:duration="500"        android:interpolator="@android:interpolator/decelerate_cubic"        android:propertyName="pathData"        android:valueFrom="M108,75                          L128,75                          M108,85                          L128,85                          M108,95                          L128,95"        android:valueTo="M72,105                          L128,105                          M72,115                          L128,115                          M72,125                          L128,125"        android:valueType="pathType" />    <objectAnimator        android:duration="500"        android:interpolator="@android:interpolator/decelerate_cubic"        android:propertyName="pathData"        android:valueFrom="M72,105                          L128,105                          M72,115                          L128,115                          M72,125                          L128,125"        android:valueTo="M72,105                         L92,105                         M72,115                         L92,115                         M72,125                         L92,125"        android:valueType="pathType" />    <objectAnimator        android:duration="500"        android:interpolator="@android:interpolator/decelerate_cubic"        android:propertyName="pathData"        android:valueFrom="M72,105                         L92,105                         M72,115                         L92,115                         M72,125                         L92,125"        android:valueTo="M72,75                        L128,75                        M72,85                        L128,85                        M72,95                        L128,95"        android:valueType="pathType" />    <objectAnimator        android:duration="500"        android:interpolator="@android:interpolator/decelerate_cubic"        android:propertyName="pathData"        android:valueFrom="M72,75                        L128,75                        M72,85                        L128,85                        M72,95                        L128,95"        android:valueTo="M108,75                          L128,75                          M108,85                          L128,85                          M108,95                          L128,95"        android:valueType="pathType" /></set>


          anim_long_lines.xml:

          <?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"    android:ordering="sequentially">    <!--開始為長線-->    <objectAnimator        android:duration="500"        android:interpolator="@android:interpolator/decelerate_cubic"        android:propertyName="pathData"        android:valueFrom="M72,105                          L128,105                          M72,115                          L128,115                          M72,125                          L128,125"        android:valueTo="M72,75                         L92,75                         M72,85                         L92,85                         M72,95                         L92,95"        android:valueType="pathType" />    <objectAnimator        android:duration="500"        android:interpolator="@android:interpolator/decelerate_cubic"        android:propertyName="pathData"        android:valueFrom="M72,75                         L92,75                         M72,85                         L92,85                         M72,95                         L92,95"        android:valueTo="M72,75                        L128,75                        M72,85                        L128,85                        M72,95                        L128,95"        android:valueType="pathType" />    <objectAnimator        android:duration="500"        android:interpolator="@android:interpolator/decelerate_cubic"        android:propertyName="pathData"        android:valueFrom="M72,75                        L128,75                        M72,85                        L128,85                        M72,95                        L128,95"        android:valueTo="M108,105                          L128,105                          M108,115                          L128,115                          M108,125                          L128,125"        android:valueType="pathType" />    <objectAnimator        android:duration="500"        android:interpolator="@android:interpolator/decelerate_cubic"        android:propertyName="pathData"        android:valueFrom="M108,105                          L128,105                          M108,115                          L128,115                          M108,125                          L128,125"        android:valueTo="M72,105                          L128,105                          M72,115                          L128,115                          M72,125                          L128,125"        android:valueType="pathType" /></set>


          anim_inner_rect.xml

          <?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"    android:ordering="sequentially">    <!--里面的長方形-->    <objectAnimator        android:duration="500"        android:interpolator="@android:interpolator/decelerate_cubic"        android:propertyName="pathData"        android:valueFrom="M73,76                          L99,76                          L99,94                          L73,94"        android:valueTo="M101,76                         L127,76                         L127,94                         L101,94"        android:valueType="pathType" />    <objectAnimator        android:duration="500"        android:interpolator="@android:interpolator/decelerate_cubic"        android:propertyName="pathData"        android:valueFrom="M101,76                         L127,76                         L127,94                         L101,94"        android:valueTo="M101,106                         L127,106                         L127,124                         L101,124"        android:valueType="pathType" />    <objectAnimator        android:duration="500"        android:interpolator="@android:interpolator/decelerate_cubic"        android:propertyName="pathData"        android:valueFrom="M101,106                         L127,106                         L127,124                         L101,124"        android:valueTo="M73,106                         L99,106                         L99,124                         L73,124"        android:valueType="pathType" />    <objectAnimator        android:duration="500"        android:interpolator="@android:interpolator/decelerate_cubic"        android:propertyName="pathData"        android:valueFrom="M73,106                         L99,106                         L99,124                         L73,124"        android:valueTo="M73,76                          L99,76                          L99,94                          L73,94"        android:valueType="pathType" />
          </set>


          布局文件:

           <ImageView        android:id="@+id/imageView"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center"/>


          最后一步,在activity中:

          final AnimatedVectorDrawable animatedVectorDrawable = (AnimatedVectorDrawable) ContextCompat.getDrawable(this, R.drawable.refresh_vector);        ImageView imageView = findViewById(R.id.imageView);        imageView.setImageDrawable(animatedVectorDrawable);        animatedVectorDrawable.start();        //循環(huán)動(dòng)畫        final Handler mainHandler = new Handler(Looper.getMainLooper());        animatedVectorDrawable.registerAnimationCallback(new Animatable2.AnimationCallback() {            @Override            public void onAnimationEnd(Drawable drawable) {                mainHandler.post(new Runnable() {                    @Override                    public void run() {                        animatedVectorDrawable.start();                    }                });            }        });


          需要源碼的童鞋公眾號回復(fù):"頭條刷新"即可獲取哦!


          到這里就結(jié)束啦!


          點(diǎn)擊這里留言交流哦


          瀏覽 28
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产精品秘 精品久久久 | 午夜久久久无码视频 | 韩国三级无码无遮床戏视频 | 69er小视频 | 淫色手机在线视频 |