Protopie進(jìn)階教程--6步教你實(shí)現(xiàn)微信狀態(tài)發(fā)布的圖片拖動(dòng)效果

導(dǎo)言

長(zhǎng)按進(jìn)入編輯狀態(tài)、拖動(dòng)對(duì)象進(jìn)行排序、移動(dòng)到特定位置刪除是常見的交互操作方式,在手機(jī)桌面編輯、第三方視頻編輯等軟件中使用。

本案例將使用Protopie來還原微信朋友圈發(fā)布狀態(tài)時(shí)的長(zhǎng)按拖動(dòng)排序的操作。


本篇教程涉及的protopie功能

○? 觸發(fā):拖拽、范圍、聯(lián)動(dòng)、長(zhǎng)按、抬起

○? 反應(yīng):移動(dòng)、排序、透明度、大小、賦值

具體實(shí)現(xiàn)效果

本案例實(shí)現(xiàn)的是微信朋友圈編輯頁面中,對(duì)已選擇的5張圖片進(jìn)行長(zhǎng)按進(jìn)入到臨時(shí)編輯狀態(tài),可以拖動(dòng)進(jìn)行圖片排序,或者拖動(dòng)至頁面底部刪除該張圖片。

動(dòng)態(tài)交互過程


制作思路

整體流程及細(xì)節(jié)分析

整體操作流程

整體流程如上圖所示分為3大階段,① 用戶長(zhǎng)按進(jìn)入臨時(shí)編輯狀態(tài) → ② 保持長(zhǎng)按并按住拖動(dòng)的臨時(shí)編輯狀態(tài) → ③ 用戶抬手執(zhí)行具體的編輯操作。其中第②階段中選中項(xiàng)停留熱區(qū)的決定具體排序與刪除操作是否執(zhí)行。

在具體動(dòng)效細(xì)節(jié)上,首先是長(zhǎng)按后選中項(xiàng)視效有大小及透明度變化,底部刪除區(qū)域出現(xiàn)。其次拖動(dòng)排序過程中,在拖動(dòng)時(shí)選中的圖片一直跟手移動(dòng),同時(shí)其余圖片實(shí)時(shí)調(diào)整順序;拖動(dòng)到刪除熱區(qū)時(shí),視效提示刪除有效伴隨提示文字的變化。最后是抬手后圖片位移至其最終排序位置,大小及透明度也恢復(fù)到未選中時(shí)樣式,刪除區(qū)域收起。

圖片拖動(dòng)排序邏輯

整個(gè)圖片拖動(dòng)過程中當(dāng)被拖動(dòng)的圖片中心點(diǎn)落入設(shè)定的位置交換熱區(qū)則更新圖片排序,見下參考圖所示。當(dāng)中心點(diǎn)在熱區(qū)1中時(shí),保持原始圖片排序;在熱區(qū)2時(shí),調(diào)整排序?yàn)?、1、3、4、5;在熱區(qū)3時(shí),順序調(diào)整為2、3、1、4、5;以此類推。刪除操作的熱區(qū)位于界面底部,可以直接通過被拖動(dòng)圖片的Y值進(jìn)行判斷。

拖動(dòng)熱區(qū)圖示


具體實(shí)現(xiàn)步驟

Step 1

新建Protopie文件,實(shí)現(xiàn)基本視效。需要注意2點(diǎn):

○? 考慮長(zhǎng)按后的放大效果,圖片的錨點(diǎn)設(shè)置在圖片的中心位置;

○? 刪除圖層初始在頁面外,同時(shí)確認(rèn)刪除的提示圖層透明度設(shè)為0不可見。

導(dǎo)入素材后界面顯示及圖層關(guān)系

Step 2

添加對(duì)圖1的長(zhǎng)按觸發(fā)設(shè)置,實(shí)現(xiàn)長(zhǎng)按后圖層置頂并伴隨大小及透明度的變化;同時(shí)長(zhǎng)按有效時(shí)刪除區(qū)域有底部向上出現(xiàn)。

Step 3

添加拖拽及范圍觸發(fā),實(shí)現(xiàn)拖動(dòng)圖1調(diào)整配圖順序。

○? 添加拖拽觸發(fā),使其在圖1透明度為90即長(zhǎng)按生效后支持圖片的拖動(dòng)移動(dòng),移動(dòng)不限方向但僅可在屏幕內(nèi),比率設(shè)為100,保證拖動(dòng)過程中圖片一直跟手操作。

拖拽觸發(fā)設(shè)置

○? 添加橫向范圍,由于案例為5張圖片2行3列形式,如前文的分析排序過程中共有5處熱區(qū)。需要設(shè)置3個(gè)橫向范圍值時(shí),并添加圖1 Y值的條件判斷。當(dāng)圖片落入熱區(qū)時(shí)將其四張圖片移動(dòng)到具體位置上。

橫向范圍設(shè)置(以圖1 X≤383舉例)

○? 添加橫向范圍后,預(yù)覽窗體驗(yàn)是發(fā)現(xiàn)僅橫向位移反應(yīng)靈敏,單純豎向移動(dòng)無反應(yīng),所以再添加2個(gè)的豎向范圍設(shè)定,保證其豎向移動(dòng)的靈敏。

豎向范圍設(shè)置(以圖1 400≤Y≤869舉例)

Step 4

對(duì)圖1添加聯(lián)動(dòng)觸發(fā),將圖1的Y坐標(biāo)與確認(rèn)刪除圖層的透明度關(guān)聯(lián)起來,使得圖1拖動(dòng)到頁面底部時(shí)確認(rèn)圖層顯示出來,以提示用戶松手后進(jìn)行刪除操作。

聯(lián)動(dòng)設(shè)置

Step 5

新增兩個(gè)變量pic1number、temp。分別代表圖1的當(dāng)前排序,及一個(gè)排序暫存區(qū)。

變量pic1number的初始值為1,代表圖1原本為第一張圖,在范圍設(shè)置中添加賦值設(shè)定,使得拖動(dòng)過程中變量值會(huì)進(jìn)行實(shí)時(shí)變化。1-5代表圖1位于第幾張圖,當(dāng)變量值為0時(shí)代表:刪除操作激活有效,松手后會(huì)刪除圖1。

由于刪除操作在用戶長(zhǎng)按時(shí)支持用戶反悔的操作,用戶可以隨時(shí)退出刪除激活的狀態(tài)。所以考慮支持用戶反悔后圖片順序仍舊為激活刪除前的順序,在激活刪除時(shí)先將當(dāng)前的圖1位置存儲(chǔ)到變量temp后,在將變量pic1number設(shè)為0;當(dāng)用戶退出刪除激活狀態(tài)后,將原本存放的變量temp賦值給到變量pic1number。

監(jiān)聽及變量賦值設(shè)置

Step 6

添加抬起操作,根據(jù)不同的變量pic1number,將圖1移動(dòng)至其最終的位置,并整體退出可編輯的狀態(tài)。

整體抬起觸發(fā)設(shè)置

大功告成!??!可以直接在預(yù)覽窗中查看效果~~

本案例以圖1為例說明基本實(shí)現(xiàn)方法,僅支持對(duì)圖1的拖動(dòng)排序或刪除,若要實(shí)現(xiàn)界面中所有圖片都支持的排序效果,涉及更復(fù)雜的變量設(shè)置及邏輯判斷,有興趣的同學(xué)可以自己嘗試研究。


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

https://cloud.protopie.io/p/2086d0bc6a



本篇教程 作者:Annie

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

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

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