成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

【Android】這效果,我沒法描述

移動開發 Android
最近接到一個需求,這需求讓我表示很尷尬。要求的效果是這樣的,頂部有部分懸浮,接著是一些布局,在下面是幾個可切換的Tab頁面,然后滾動的時候.....聽到要實現這樣的效果,我抽屜那把砍產品專用菜刀已經蠢蠢欲動了。

前言

最近接到一個需求,這需求讓我表示很尷尬。(下面是一些廢話)

要求的效果是這樣的,頂部有部分懸浮,接著是一些布局,在下面是幾個可切換的Tab頁面,然后滾動的時候~~吧啦吧啦吧啦吧啦~~ 還是直接看圖吧

【Android】這效果,我沒法描述

主要就是頂部和Tab的懸浮,還有就是被頂掉的那個效果。

[[209268]]

聽到要實現這樣的效果,我抽屜那把砍產品專用菜刀已經蠢蠢欲動了。

思路

先說說實現的思路吧,上面的效果大致可以分成兩個部分:

1、Tab向上滾動到頂部時懸浮

Tab滾動后懸浮在頂部嘛~~ 這效果使用CoordinatorLayout + AppBarLayout就能輕松實現。(什么?你還不懂這兩個控件怎么使用?額,應該可以勉強看懂后面的內容)

2、頂部懸浮以及“被頂走”的效果

只要在CoordinatorLayout外面套一層FrameLayout,然后把這個頂部的布局改在上面。接著監聽AppBarLayout的滾動,利用topMargin實現被“頂上去”的效果

拆分完畢,接下來就是實現了

實現

  • Tab的懸浮效果

利用CoordinatorLayout、AppBarLayout、TabLayout、ViewPager來實現Tab的懸浮效果

  1. <br> 

LinearLayout中設置app:layout_scrollFlags="scroll|exitUntilCollapsed" 而 TabLayout 不設置app:layout_scrollFlags屬性

ViewPager中使用app:layout_behavior="@string/appbar_scrolling_view_behavior"

layout_scrollFlags:AppBarLayout供Children View使用的屬性,一共有五種值:scroll,enterAlways,enterAlwaysCollapsed,snap,exitUntilCollapsed。具體的使用可以參考Android 詳細分析AppBarLayout的五種ScrollFlags

(CoordinatorLayout、AppBarLayout的詳細用法我就不多說了)

然后,只要在Java代碼中為ViewPager添加幾個列表Fragment就能看到以下的效果(注意:列表不可以是ListView,需要用RecyclerView)

【Android】這效果,我沒法描述

到目前為止,效果已經實現了大半。最后值需要實現“被頂走”的效果就好了。

  • 頂部“被頂走”的效果

這時候,布局稍微改變下。

  1. <br> 

在原有的基礎上,套了個FrameLayout,頂部的懸浮部分可以通過FrameLayout來實現。這樣也導致下面的布局被蓋住了一部分,因此在LinearLayout中加了與懸浮部分相同高度的空View。

布局是完成了,那個“被頂走”的效果怎么實現呢?這時候只要在MainActivity中對AppBarLayout的滾動進行監聽即可。

 

  1. @BindView(R.id.app_bar) 
  2.     AppBarLayout mAppBar; 
  3.     @BindView(R.id.sticky_view) 
  4.     View mStickyView; 
  5.     @BindView(R.id.header) 
  6.     View mHeader; 
  7.     private void setAppBarListener() { 
  8.         mAppBar.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() { 
  9.             @Override 
  10.             public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { 
  11.                 //頭部高度(除去被頂部覆蓋的部分) 
  12.                 int minScrollHeight = mHeader.getMeasuredHeight(); 
  13.                 int margin = minScrollHeight + verticalOffset; 
  14.                 margin = margin > 0 ? 0 : margin; 
  15.                 FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) mStickyView.getLayoutParams(); 
  16.                 layoutParams.topMargin = margin; 
  17.                 mStickyView.setLayoutParams(layoutParams); 
  18.             } 
  19.         }); 

這里通過AppBarLayout滾動的進行監聽(向上滾動時,verticalOffset值的變化為:0、-1 、-2 ... -n-1、-n)來計算margin值。通過改變topMargin,實現“被頂走”的效果。

再看一眼效果:

【Android】這效果,我沒法描述

敲到這里,我才默默的收起了那把砍產品專用菜刀。

Tips

問題:使用CoordinatorLayout時,滾動不流暢問題

解決方案:可以寫個Behavior添加到AppBarLayout中。具體的解決方案

問題:如果你在想要刷新功能,在CoordinatorLayout外面套了一個SwipeRefreshLayout,一不小心就觸發了刷新~~(自己體會)

解決方案:這個問題可以通過對AppBarLayout的監聽,設置swipeLayout的Enabled來處理

 

  1. mAblAppBar.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> { 
  2.    if (verticalOffset == 0) { 
  3.       swipeLayout.setEnabled(true); 
  4.    } else { 
  5.        if (!swipeLayout.isRefreshing()) { 
  6.           swipeLayout.setEnabled(false); 
  7.        } 
  8.    } 
  9. }); 
責任編輯:未麗燕 來源: 帶心情去旅行
相關推薦

2023-02-15 08:30:05

2021-06-11 06:45:32

SQL結構化語言

2013-07-17 09:13:19

2020-04-29 14:50:40

代碼對比工具

2021-02-28 13:54:53

加密貨幣比特幣貨幣

2019-06-14 08:48:46

Tomcat日志SpringBoot

2018-02-02 12:49:09

庫克iPhone喬布斯

2021-04-27 10:02:40

股票數組代碼

2017-03-07 10:07:25

PythonIDE

2009-07-22 11:02:54

2021-05-11 09:27:54

裝飾器模式代碼開發

2024-04-17 08:21:44

2020-12-25 09:38:07

Vue前端代碼

2010-02-05 16:58:18

Android服務

2022-10-26 11:47:45

2021-08-16 08:02:34

技術文檔代碼

2021-04-11 07:48:42

定時任務Linux jdk

2021-09-29 08:23:56

項目css

2020-02-07 11:50:24

代碼開發工具

2021-08-04 09:31:06

Chrome破壞性功能
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产日韩亚洲欧美 | 91成人精品视频 | 99久久精品国产毛片 | 欧美a级成人淫片免费看 | av毛片| 国产一区二区三区久久久久久久久 | 中文字幕一区二区三区精彩视频 | 国产精品成人一区二区三区夜夜夜 | 伦理片97| 日韩网站免费观看 | 久久精品一 | 日韩a视频 | 久久综合一区二区三区 | 欧美在线一区二区三区 | 亚洲欧美日韩一区二区 | 欧美日韩免费一区二区三区 | 成人精品鲁一区一区二区 | 欧美日韩国产一区二区三区 | 亚洲精品国产电影 | 久热电影 | 伊人久久一区二区 | 欧美中文字幕一区二区三区亚洲 | h在线| 一区二区国产精品 | 懂色中文一区二区三区在线视频 | 成年人在线视频 | 久久亚洲国产 | 一区二区免费视频 | 久久久123 | 91看片| 国产一区| 狠狠婷婷综合久久久久久妖精 | 国产高清在线观看 | 国产在线视频一区二区 | 精品91视频 | 亚洲h在线观看 | 日本三级线观看 视频 | 国产一区二 | av网站免费观看 | 第一区在线观看免费国语入口 | 精品91视频 |