最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android實現(xiàn)美團外賣底部導航欄動畫

 更新時間:2019年11月29日 09:04:46   作者:甜夢_  
這篇文章主要介紹了Android實現(xiàn)美團外賣底部導航欄動畫,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

體驗了一下美團外賣的底部導航欄,感覺動畫很流暢,分割線被頂起,還有圖標的動畫,可能用的lottie,覺得分割線被頂起可以自己寫動畫,所以試著寫了一下 。

想自定義view點擊實現(xiàn)動畫效果,自定義view的區(qū)域一定比背景需要被頂起的線要高,所以布局如下:

開始繪制view,被頂起的曲線分三段,前后兩端曲線對稱的,用path繪制曲線,中間段繪制貝塞爾曲線。

那么我們分別繪制三段曲線,用ValueAnimator實現(xiàn)效果,

private void initAnim() {
  value = startValue;
  animator = ValueAnimator.ofInt(startValue, halfValue, endValue);
//  animator.setInterpolator(new DecelerateInterpolator());
  animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
   @Override
   public void onAnimationUpdate(ValueAnimator valueAnimator) {
    value = (int) valueAnimator.getAnimatedValue();
    invalidate();
   }
  });
  animator.setDuration(ANIM_TIME);
  animator.start();
 }

動畫執(zhí)行過程中有個回彈,那么value的變化需要一個中間值,

startValue = 0;
halfValue = -DensityUtils.dp2px(context, 35);
endValue = -DensityUtils.dp2px(context, 25);

在onDraw中繪制曲線代碼如下,

rectF = new RectF((((float)width - (float)contentSize) / 2),
    lineToTop + value,
    (float) width - ((float)width - (float)contentSize) / 2,
    height + value);
 
 
  if (value < 0 ) {
   Path path = new Path();
   //繪制第一段圓弧
   path.moveTo(rectF.left - 20, lineToTop);
   float firstCubicHight = ((float) lineToTop - rectF.top) / 4;
   float end = (float) lineToTop - firstCubicHight;
   path.cubicTo(
     rectF.left - 10,
     (float) lineToTop - firstCubicHight / 16,
     rectF.left,
     (float) lineToTop - firstCubicHight / 12,
     rectF.left + 10,
     end
   );
 
   //繪制第二段圓弧
 
   path.quadTo(
     rectF.left + contentSize / 2,
     rectF.top * 0.9f,
     rectF.right - 10,
     end
   );
   //繪制第三段圓弧,和第一段對稱
 
   path.cubicTo(
     rectF.right,
     (float) lineToTop - firstCubicHight / 12,
     rectF.right + 10,
     (float) lineToTop - firstCubicHight / 16,
     rectF.right + 20,
     lineToTop
   );
 
   Path pathBg = new Path();
   pathBg.addPath(path);
 
   pathBg.lineTo(rectF.right + 20, height);
   pathBg.lineTo(rectF.left - 20, height);
   pathBg.lineTo(rectF.left - 20, lineToTop);
   canvas.drawPath(pathBg, paintBg);//繪制白色背景
 
   canvas.drawPath(path, paintBgStroke);//繪制曲線
 
  }

最后在onDraw()中畫上圖片也用屬性動畫移動就成功啦。

因為有曲線銜接貝塞爾曲線,感覺弧度有時候改變曲線不是很流暢,大家應該會有更好的辦法 歡迎補充!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Android Retrofit實現(xiàn)多圖片/文件、圖文上傳功能

    Android Retrofit實現(xiàn)多圖片/文件、圖文上傳功能

    Retrofit是Square開發(fā)的一個Android和Java的REST客戶端庫。這個庫非常簡單并且具有很多特性,相比其他的網(wǎng)絡庫,更容易讓初學者快速掌握
    2017-03-03
  • Android?Scroller實現(xiàn)彈性滑動效果

    Android?Scroller實現(xiàn)彈性滑動效果

    這篇文章主要為大家詳細介紹了Android?Scroller實現(xiàn)彈性滑動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Android報錯Didn‘t?find?class?“android.view.x“問題解決原理剖析

    Android報錯Didn‘t?find?class?“android.view.x“問題解決原理剖析

    這篇文章主要為大家介紹了Android報錯Didn‘t?find?class?“android.view.x“問題解決及原理剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • Android添加用戶組及自定義App權限的方法

    Android添加用戶組及自定義App權限的方法

    今天小編就為大家分享一篇Android添加用戶組及自定義App權限的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • 使用VideoView播放App中的資源文件

    使用VideoView播放App中的資源文件

    這篇文章主要介紹了使用VideoView播放App中的資源文件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • Android實現(xiàn)狀態(tài)欄和虛擬按鍵背景顏色的變化實例代碼詳解

    Android實現(xiàn)狀態(tài)欄和虛擬按鍵背景顏色的變化實例代碼詳解

    今天介紹一下,我在項目開發(fā)過程中,實現(xiàn)狀態(tài)欄和虛擬按鍵背景顏色變化的方法,實現(xiàn)方式是,通過隱藏系統(tǒng)的狀態(tài)欄和虛擬按鍵的背景,實現(xiàn)圖片和背景顯示到狀態(tài)欄和虛擬按鍵下方,需要的朋友可以參考下
    2019-05-05
  • Android獲取應用程序大小和緩存的實例代碼

    Android獲取應用程序大小和緩存的實例代碼

    這篇文章主要介紹了Android獲取應用程序大小和緩存的實例代碼的相關資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下
    2016-10-10
  • Android中監(jiān)聽Home鍵的4種方法總結

    Android中監(jiān)聽Home鍵的4種方法總結

    這篇文章主要介紹了Android中監(jiān)聽Home鍵的4種方法總結,本文講解了onSaveInstanceState方法、onUserLeaveHint方法、ACTION_CLOSE_SYSTEM_DIALOGS、framework PhoneWindowManager.java等4種方法,需要的朋友可以參考下
    2015-04-04
  • 自定義GridView并且實現(xiàn)拖拽(附源碼)

    自定義GridView并且實現(xiàn)拖拽(附源碼)

    本文實現(xiàn)了GridView的拖拽功能,原理很簡單只是在交換位置上記錄了X軸的相關坐標,計算了X軸的相關變量,實例代碼如下,感興趣的額朋友可以參考下哈
    2013-06-06
  • Android View教程之自定義驗證碼輸入框效果

    Android View教程之自定義驗證碼輸入框效果

    這篇文章主要給大家介紹了關于Android View教程之自定義驗證碼輸入框效果的相關資料,文中通過示例代碼介紹的非常詳細,對各位Android開發(fā)者們具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-05-05

最新評論

竹山县| 裕民县| 罗源县| 广德县| 汾阳市| 平定县| 瑞昌市| 蒙阴县| 黄石市| 汕头市| 酒泉市| 涞水县| 海淀区| 改则县| 山西省| 景谷| 大连市| 平乡县| 桓仁| 黄骅市| 巴林右旗| 长垣县| 西贡区| 肃北| 独山县| 江北区| 尼勒克县| 平罗县| 中卫市| 资兴市| 梅河口市| 北票市| 察隅县| 淮北市| 金秀| 金川县| 武夷山市| 黄大仙区| 罗田县| 京山县| 隆子县|