仿美團app,浮動layout滑動到頂部懸停效果

2021-06-28 00:31:45 字數 3118 閱讀 1467

說明原理

好,看完效果圖之後,我們來看一下這個效果的設計原理。

首先,我們來看一張整體的設計圖:

設計效果圖是分為三個部分:頂部區域、浮動區域a、列表區域。

1.當螢幕往上面滑動的時候,互動區域a也跟著滑動;

2.當浮動區域a滑動到頂部的時候,浮動區域a停留在頂部(上右圖);

3.當螢幕往下滑動的時候,浮動區域a也跟著往下滑動。

這是整個滑動的效果流程。

那麼,這時問題來了。怎麼能讓浮動區域a停在頂部,而且不影響其他內容的滑動呢?

在這裡我們可以寫多乙個和浮動區域a介面效果一模一樣的浮動區域b。在布局的時候,先把浮動區域b的可見性設定為gone,即隱藏起來。當浮動區域a滑動到頂部的時候,就把浮動區域b的可見性設定為visible,即可見。這時浮動區域b會覆蓋在整個螢幕的上面,即使整個螢幕在滑動的時候也不會影響浮動區域b的位置,那麼看起來就好像浮動區域a是停留在頂部位置不動了,見下圖。

(此時,設定浮動區域b的可見性為visible,即可見)

同理,當整個螢幕往下滑動的時候,再把浮動區域b的可見性設定為gone,那麼看起來的效果就好像浮動區域a又重新滑動起來了。

這個原理大家應該可以理解吧!

實現過程

說完原理之後,讓我們來看看在**裡面是怎麼實現這個過程的。

我們先看看布局檔案activity_main.xml

xmlns:tools=""

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".mainactivity" >

android:id="@+id/scroll_view"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="vertical">

android:id="@+id/image_view"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:background="@drawable/pic01"/>

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal"

android:background="#f6e4c0">

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_weight="1"

android:textsize="10pt"

android:text="可樂雞翅  55元"

android:textcolor="#e68b4e"/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="立即購買"

android:textcolor="#ffffff"/>

android:id="@+id/list_view"

android:layout_width="match_parent"

android:layout_height="0dp"

android:layout_weight="1">

android:id="@+id/flow_llay"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal"

android:background="#f6e4c0"

android:visibility="gone">

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_weight="1"

android:textsize="10pt"

android:text="可樂雞翅  55元"

android:textcolor="#e68b4e"/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="立即購買"

android:textcolor="#ffffff"/>

複製**

布局檔案效果:

頂部的「可樂雞翅」就是剛剛所說的浮動區域b,中間的「可樂雞翅」則是浮動區域a,布局檔案應該不難理解。

那麼我們怎麼知道何時隱藏、顯示頂部的浮動layout呢?

由於整體的布局內容都是放在乙個自定義的scrollview裡面。所以,只要我們在scrollview裡面判斷:

當scrollview向上滑動的距離大於等於頂部區域的高度時,也就是浮動區域a的頂邊貼到螢幕頂部的時候,這是將浮動區域b的可見性設定為visible即可,否則設定為

gone

即可。      這樣就實現了我們想要的效果了。

關鍵**:

@override

protected void onscrollchanged(int l, int t, int oldl, int oldt) else }}

複製**

設計效果圖, 

layout, 

設計圖, 

美團, 

layout, 

layout, 

layout, 

layout

本主題由 system 於 5 天前 解除限時高亮

無標題.png

仿美團app,浮動layout滑動到頂部懸停效果

那麼,這時問題來了。怎麼能讓浮動區域a停在頂部,而且不影響其他內容的滑動呢?在這裡我們可以寫多乙個和浮動區域a介面效果一模一樣的浮動區域b。在布局的時候,先把浮動區域b的可見性設定為gone,即隱藏起來。當浮動區域a滑動到頂部的時候,就把浮動區域b的可見性設定為visible,即可見。這時浮動區域b...

仿美團pc,koa ssr(六)

一,地點詳情頁 product.vue元件,點選h3標題,跳轉到對應地點的詳情detail路徑 商品 rate v model meta.rate colors ff9900 ff9900 ff9900 disabled v if meta.rate 4 class s item comment 很...

仿美團pc,koa ssr(四)

一,城市服務功能 components 新建changecity目錄 新建isselect.vue元件 按省份選擇 select v model pvalue placeholder 省份 option v for item in province key item.value label item...