Protopie進階教程--列表橫滑操作實現(xiàn)

對單條列表進行橫向滑動顯示其支持的操作項,是一種比較常見的移動端交互方式。本案例將以任務(wù)列表頁面為例,使用Protopie軟件來實現(xiàn)單條任務(wù)列表左滑刪除、右滑設(shè)為完成的效果。


涉及到的基本Protopie功能

○? Protopie組件的使用

○? 觸發(fā):拖拽、監(jiān)聽、抬起、長按

○? 反應(yīng):移動、透明度、大小

實現(xiàn)效果

案例具體實現(xiàn)效果

本案例在任務(wù)列表頁面中對于單條列表均支持左右滑動。向左滑動顯示刪除操作,當(dāng)滑動超過設(shè)定距離或點擊刪除按鈕時,刪除該條任務(wù)并將之后當(dāng)任務(wù)進行上移。向右滑動顯示設(shè)為已完成操作,同樣的當(dāng)滑動距離超過設(shè)定距離或點擊設(shè)為完成按鈕時,對任務(wù)文本添加刪除線表示其已完成。

實現(xiàn)思路

左后橫滑的操作及范圍分析

由于單條列表是支持左右滑動,并基于用戶的滑動距離實現(xiàn)不同的反饋,這在Protopie中主要通過用戶滑動操作抬起后列表本身的位置X來進行判斷的。如圖所示,將界面的橫軸分為5個不同區(qū)段,分別為直接刪除區(qū)域、顯示刪除按鈕區(qū)域、不顯示操作項區(qū)域、顯示設(shè)為完成按鈕區(qū)域、直接設(shè)為完成區(qū)域,當(dāng)用戶抬起操作執(zhí)行時,列表錨點X落入不同范圍執(zhí)行對應(yīng)操作。

操作范圍圖示

利用組件提升效率

Protopie在4.0版本上新增了組件功能,通過建立組件,可以將同類的動效組件快速應(yīng)用到不同場景,避免不必要的重復(fù)性工作,提高原型制作效率。本案例中的任務(wù)列表頁面中每個單條的列表支持的觸發(fā)及反應(yīng)一致,可以通過建立單條列表的組件并在具體場景中復(fù)用,來減少重復(fù)設(shè)置提升效率。

○ ?新建組件:一種是在具體場景頁面中選取要建立的組件所涉及的所有圖層,點擊上端的“組件”或者右鍵選擇“創(chuàng)建組件”實現(xiàn)組件的建立。另一種可以直接在組件管理面板中點擊加號新建一個空的組件對象。

添加組件的兩種方式入口

○ ?使用及編輯組件:組件編輯完成后,回到場景,可以直接將編輯好的組件從左側(cè)拖入到畫板,實現(xiàn)組件的調(diào)用。根據(jù)使用場景的不同,可以對組件做單獨調(diào)整,像本案例中可以編輯列表中的文本內(nèi)容。如果需要調(diào)整組件母版,點擊左側(cè)的組件圖標,雙擊要修改的組件即可編輯。還可以在場景中選中一個調(diào)整后的組件,勾選“設(shè)置為母版組件”,完成后組件組件在圖層列表中的顏色變化,這樣對其的調(diào)整會同步到其他組件上。

設(shè)置為母版組件方式及設(shè)置成功后視效差異

不同長度文本的刪除線添加

案例中當(dāng)任務(wù)列表設(shè)為完成后對具體的文本會添加刪除線,并且刪除線有從左向右展開的動效。Protopie中文本的樣式中沒有刪除線的設(shè)置,所以實現(xiàn)是我們需要使用矩形來實現(xiàn)。同時由于對于列表我們使用了組件,所以具體效果需要根據(jù)文本的長度實現(xiàn)調(diào)整。這里涉及Protopie中的文本處理表達式?length(source:TEXT),支持計算文本的長度(字符數(shù)+空格數(shù)),乘上單個文字的長度就可以獲得文本刪除線的寬度。

文本長度函數(shù)說明


具體實現(xiàn)步驟

Step 1

新建Protopie文件,將Figma的頁面設(shè)計文檔導(dǎo)入到Protopie中。選擇單獨的一行列表,及其對應(yīng)的刪除提示&設(shè)為完成提示,建立組件。利用組件復(fù)制出多個列表并添加到滾頁容器中,實現(xiàn)基本視效。

基本視效界面

Step 2

進入組件,首先實現(xiàn)列表的左右滑動,使其支持拖拽進行橫向移動,并監(jiān)聽列表的X的位置判斷左右移動的方向顯示刪除提示或設(shè)為完成提示。

拖拽及監(jiān)聽設(shè)置

Step 3

添加抬起觸發(fā),當(dāng)抬起列表時。基于之前的橫滑范圍及具體操作的分析,設(shè)定列表X不同范圍區(qū)間下抬起操作的對應(yīng)反應(yīng)。

其中當(dāng)列表的?X≥327?對應(yīng)直接設(shè)為完成的范圍下,對預(yù)先設(shè)置的文字蒙層及刪除線添加大小變化,大小變至表達式?length(`task name`.text)*9?。

列表抬起觸發(fā)設(shè)置

Step 4

當(dāng)用戶拖動過程中,列表X的值在直接刪除或直接設(shè)為完成的范圍內(nèi)時,移動delete及checked的圖標以提示操作直接生效,但當(dāng)用戶拖動到其他三個范圍內(nèi)時則將delete及checked圖標移動至初始位置。在對列表X的監(jiān)聽中增加對于的條件及反應(yīng)設(shè)置。

列表 位置X?的監(jiān)聽設(shè)置

Step 5

在組件中對delete及checked圖標添加單擊觸發(fā),使其在點擊后實現(xiàn)列表刪除或設(shè)為完成的對應(yīng)反應(yīng)??梢詼y試一下,到這一步列表組件的部分就實現(xiàn)完成了。

delete & checked 圖標單擊觸發(fā)設(shè)置

Step 6

回到場景中,我們會發(fā)現(xiàn)目前就遺留一個問題就是,當(dāng)任務(wù)列表刪除后,組件中設(shè)置的列表高度縮放消失,在列表序列中會導(dǎo)致新增出空缺行的問題。為解決這問題,我們需要在場景中對每一個調(diào)用的列表組件添加一個高度比的監(jiān)聽觸發(fā),當(dāng)其高度發(fā)生縮放時(刪除操作生效時),向上移動該列表之下的所有列表組件。案例中一共設(shè)置了9行列表,所以對應(yīng)第4行列表高度變化時,第5-9行都需要增加一個向上移動的設(shè)置如下圖所示。

組件 高度比 監(jiān)聽設(shè)置

所有設(shè)置都完成后,便可以在預(yù)覽窗中連接手機查看效果啦~~


案例源文件下載&預(yù)覽

https://cloud.protopie.io/p/2dbc6cb9d4


本篇教程 作者:Annie

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 導(dǎo)讀計時器——用戶可設(shè)定時間段,點擊開始后時間倒數(shù),直到結(jié)束。本案例中用戶可以設(shè)定24小時以內(nèi)的任意時間值進行倒計...
    二樓自習(xí)室閱讀 2,535評論 1 2
  • 最近感覺自己好像又頹廢了很多,好幾天沒有堅持早起了,不早起就不去晨跑,晚上因為很多原因也沒有看書,好幾天這樣的日子...
    兮兮_d9f8閱讀 253評論 0 1
  • 〔原文】詩云:“緡蠻黃鳥,止于丘隅。”子曰:“于止,知其所止,可以人而不如鳥乎?” 【張居正講解】《詩》,是《小雅...
    張永良小霖閱讀 1,101評論 0 1
  • 望眼欲穿用來形容我現(xiàn)在的工作在貼切不過了,職業(yè)汽車人。 每天都在忙碌中等待著,等待著電話邀約的客戶進店,乃至成交。...
    意境隨心閱讀 557評論 0 0

友情鏈接更多精彩內(nèi)容