中繼器使用場(chǎng)景(三):輪播圖放大效果

bobowang
10 評(píng)論 9145 瀏覽 34 收藏 15 分鐘
🔗 产品经理的不可取代的价值是能够准确发现和满足用户需求,把需求转化为产品,并协调资源推动产品落地,创造商业价值。

本文以“人人都是產(chǎn)品經(jīng)理”手機(jī)app原型為例,講解輪播過(guò)程中的,側(cè)圖留框、主圖放大的功能,以及自動(dòng)輪播和手動(dòng)拖動(dòng)的實(shí)時(shí)切換。(末尾有彩蛋)

現(xiàn)在手機(jī)app中我們經(jīng)常能看到有放大,并且兩邊有前后圖片留框的輪播效果,同時(shí)支持手動(dòng)拖動(dòng)和自動(dòng)輪播兩種形式。我以“人人都是產(chǎn)品經(jīng)理”手機(jī)app為例,做了高保真原型。

具體GIF演示如下:

這里輪播形式是目前手機(jī)app開(kāi)窗慣用的形式,具體特點(diǎn):

(1)主內(nèi)容圖片兩側(cè)有前后圖片的邊框。

(2)開(kāi)窗顯示的主圖片尺寸會(huì)自動(dòng)放大,在本原型中,主圖片的高度比前后圖片要增高。

(3)進(jìn)入頁(yè)面后自動(dòng)輪播,支持左右拖動(dòng),拖動(dòng)結(jié)束后,若無(wú)繼續(xù)操作,將再次進(jìn)入自動(dòng)輪播狀態(tài)。

思路

(1)為何不能用動(dòng)態(tài)面板的輪播功能

因?yàn)閮蓚?cè)有前后圖片留框效果,如果只是簡(jiǎn)單的用動(dòng)態(tài)面板不同state之間的輪播是達(dá)不到此效果的。

(2)是否可以用動(dòng)態(tài)面板,移動(dòng)里面的圖片的同時(shí),改變圖片坐標(biāo),來(lái)達(dá)到輪播的效果

因?yàn)槔锩嬗小爸鲌D片自動(dòng)放大,次圖片自動(dòng)縮小”的特效,如果用上述方法會(huì)非常繁瑣。

(3)整體思路:

  1. 兩側(cè)有前后圖片留框效果——用到動(dòng)態(tài)面板的遮罩功能;
  2. 手動(dòng)、自動(dòng)輪播切換效果——用到動(dòng)態(tài)面板的“循環(huán)開(kāi)關(guān)”功能;
  3. 圖片循環(huán)輪轉(zhuǎn)——中繼器實(shí)時(shí)排序功能;
  4. 主圖片放大效果——尺寸改變交互功能。

操作步驟

(1)準(zhǔn)備動(dòng)態(tài)面板mask,在屬性中,取消選擇“自動(dòng)調(diào)整為內(nèi)容尺寸”選項(xiàng)。

(2)在mask的State1中放入五個(gè)圖片元件標(biāo)志,不要導(dǎo)入具體圖片,并命名為1、2、3、4、5。因?yàn)榇颂幹皇亲寛D片占位符確定位置,具體的圖片內(nèi)容靠后面講的中繼器賦值。

將五個(gè)圖片排成一排,中間略有隔開(kāi),其中第二張圖片(命名2)調(diào)整為樣例中主圖片大?。ㄔ椭兄鲌D片尺寸為寬316×高159),其他四張圖片的高度比圖片2矮一些(原型中其他圖片尺寸為寬366×高144)。

然后編組組合為一體,擺放位置為正好第一張圖片在動(dòng)態(tài)面板左側(cè)外。

具體過(guò)程看gif:

(3)準(zhǔn)備中繼器

在頁(yè)面的空白處(注意不是在動(dòng)態(tài)面板里),拖入一個(gè)中繼器,將里面的矩形刪除,不用放入任何元件,只需在數(shù)據(jù)集中,建兩列,number列輸入12345共計(jì)5行,img列對(duì)應(yīng)導(dǎo)入我們需要展現(xiàn)的5張圖片。

具體過(guò)程看GIF,這步非常重要。

然后在中繼器中繼續(xù)操作,在中繼器“載入時(shí)”,加入交互,按“number列”進(jìn)行升序排列。

接下來(lái)的交互非常重要,是我們常規(guī)對(duì)于中繼器的反操作。之前我們大部分案例,是外部元件為中繼器賦值,現(xiàn)在是中繼器為外部元件賦值,具體如下:

以Case1 為例:

條件:if “[[Item.index]]” == “1”

解釋?zhuān)?/strong>index函數(shù)的用途:獲取數(shù)據(jù)行的索引編號(hào),編號(hào)起始為1,由上至下每行遞增1。是系統(tǒng)自動(dòng)生成的,不隨行數(shù)劇變化而變化,就像Excel中的表格左側(cè)的行號(hào)。

交互:設(shè)置動(dòng)態(tài)面板mask里的圖片組合中的圖1(排在第一個(gè)的圖片)==中繼器中行號(hào)為1的img列里的片,即我們?cè)谥欣^器img導(dǎo)入的圖片,即動(dòng)態(tài)面板圖1的位置顯示的是中繼器中index==1的里的圖片內(nèi)容。

解釋?zhuān)?/strong>因?yàn)橹拔覀冎谱鞯膭?dòng)態(tài)面板里的圖片都是元件圖標(biāo),沒(méi)有導(dǎo)入具體的圖片,現(xiàn)在將動(dòng)態(tài)面板中的5個(gè)圖片分別綁定為中繼器中的5個(gè)index里的圖片。后續(xù)會(huì)利用中繼器的排序功能為動(dòng)態(tài)面板實(shí)現(xiàn)循環(huán)效果。

以同樣的方法設(shè)置圖片2、3、4、5。

(4)為動(dòng)態(tài)面板mask添加交互

4.1 向左拖動(dòng)結(jié)束時(shí)

第一步:移動(dòng)動(dòng)態(tài)面板里的圖片組合向左側(cè)移動(dòng)X坐標(biāo)“相對(duì)”位置-322。這個(gè)數(shù)值自己去調(diào)整,在動(dòng)態(tài)面板中拖動(dòng)位置,自己計(jì)算起始位置到拖動(dòng)位置的差值即可。注意選擇的是相對(duì)位置即“經(jīng)過(guò)”,因?yàn)檫@樣的話不用設(shè)置y坐標(biāo),加上線性動(dòng)畫(huà)500毫秒。

第二步:當(dāng)圖片組合向左挪動(dòng)一格后,挪出屏幕的是動(dòng)態(tài)面板圖2的位置并顯示的是中繼器index==2的圖片內(nèi)容,目前就是中繼器中的圖片2。同理顯示在主屏幕的應(yīng)該是動(dòng)態(tài)面板圖3的位置,并顯示的是中繼器index==3的圖片內(nèi)容,目前就是中繼器中的圖片3,所以設(shè)置原來(lái)是大圖的圖片2高度變小,原來(lái)是小圖的圖片3變大。

第三步:等待550毫秒,這里我要重點(diǎn)說(shuō)一下“等待”這個(gè)交互。因?yàn)槲覀兩厦鎺撞降慕换ブ卸加芯€性動(dòng)畫(huà)500毫秒的設(shè)置,如果在后續(xù)的動(dòng)作中,強(qiáng)調(diào)是“同步性”即在上述500毫秒的線性動(dòng)畫(huà)進(jìn)行的同時(shí),去做其他動(dòng)作,這里可以不用加入“等待”交互。

如果強(qiáng)調(diào)“先后性”,即在500毫秒動(dòng)畫(huà)結(jié)束后,進(jìn)行接下來(lái)的動(dòng)作,那么必須在兩個(gè)動(dòng)作之間加入>500毫秒的等待時(shí)長(zhǎng)。因?yàn)榻酉聛?lái)的第四步交互是要在上述動(dòng)作全部完結(jié)后再進(jìn)行,所以要加入550毫秒的等待。

第四步:燒腦時(shí)刻,我們要給中繼器重新排序,造輪播效果。

為中繼器更新行,更新條件為[[TargetItem.index==1]]即中繼器的第一行,注意上面所說(shuō)的index的含義。

更新列為:number列。

更新為:[[Item.number+TargetItem.Repeater.dataCount]]即第1行(TargetItem.index==1)的number列值為1,現(xiàn)在更新為1+5=6,這里的TargetItem.Repeater.dataCount是指該中繼器中數(shù)據(jù)的總行數(shù),本中繼器一共5行數(shù)據(jù),所以為1+5=6。

因?yàn)?,中繼器在載入時(shí)設(shè)置了以number數(shù)值為準(zhǔn),做升序排列,所以作為這一步,原圖片順序的變化為:

上述順序,大家靜下心捋一捋就能明白,關(guān)鍵點(diǎn):

  • index數(shù)字是系統(tǒng)自帶行標(biāo),不能改變的,就如同excel中左側(cè)的一列數(shù)字。
  • number列的數(shù)字,是為了排序用。
  • 動(dòng)態(tài)面板里的圖片占位符是為了確定位置。

到了這一步,我們看看效果gif:

第五步:大家會(huì)發(fā)現(xiàn),當(dāng)我們拖動(dòng)動(dòng)態(tài)面板時(shí),主窗口圖片由圖2變?yōu)閳D3并放大后,很快就切入下一輪播,即直接跳到圖片4,但是我們的原型是需要靠人為的主動(dòng)拖動(dòng),將圖片進(jìn)行輪播。所以我們?cè)谕瓿晌恢弥嘏藕螅瑢⑻崆安シ诺膱D片4再拉回去。注意動(dòng)畫(huà)要選無(wú)。

第六步:重新排序后,被拉回主窗口的是動(dòng)態(tài)面板中圖片2的位置,所以將其改為大圖顯示,同理將被拉出櫥窗外的動(dòng)態(tài)面板中的圖3位置改為小圖,注意動(dòng)畫(huà)要選無(wú)。

到這步,向左滑動(dòng)交互全部完成,圖片的輪播順序變化總結(jié)如下:

4.2 同樣的方法為動(dòng)態(tài)面板添加交互——向右拖動(dòng)結(jié)束時(shí)

詳細(xì)步驟不再贅述,基于向左拖動(dòng),向右拖動(dòng)很多數(shù)值和圖片位置的計(jì)算正好相反,簡(jiǎn)單的給大家劃一下重點(diǎn):

下面這步條件為:[[TargetItem.index==TargetItem.Repeater.dataCount]]。

到這步,向右滑動(dòng)交互全部完成。

為輪播加入“自動(dòng)輪播”和“取消自動(dòng)輪播”以及“恢復(fù)自動(dòng)輪播功能”的交互

第一步:我們?cè)陧?yè)面新拖入一個(gè)動(dòng)態(tài)面板,命名auto,分別加入兩個(gè)狀態(tài),state1和state2,每個(gè)狀態(tài)里沒(méi)有任何內(nèi)容。

第二步:在動(dòng)態(tài)面板auto載入時(shí),加入自動(dòng)輪播的交互。

第三步:在動(dòng)態(tài)面板auto狀態(tài)改變時(shí),加入“觸發(fā)”之前包含圖片的mask動(dòng)態(tài)面板向左拖動(dòng)結(jié)束時(shí)的交互,即狀態(tài)每改變一次,就向自動(dòng)左拖動(dòng)一次。

到這步就實(shí)現(xiàn)了動(dòng)態(tài)面板mask自動(dòng)輪播的效果,接下來(lái),我們來(lái)實(shí)現(xiàn)解除和恢復(fù)自動(dòng)輪播的效果,即當(dāng)人工進(jìn)行拖動(dòng)時(shí),自動(dòng)輪播停止,當(dāng)不再拖動(dòng)時(shí),自動(dòng)輪播恢復(fù)。

第四步(接上面):在動(dòng)態(tài)面板mask(含圖片組合的大動(dòng)態(tài)面板)“鼠標(biāo)按下”時(shí),加入交互。

第五步:在動(dòng)態(tài)面板mask(含圖片組合的大動(dòng)態(tài)面板)“鼠標(biāo)移出”時(shí),加入交互,即當(dāng)不再進(jìn)行操作時(shí),重新觸發(fā)auto動(dòng)態(tài)面板載入時(shí)自動(dòng)輪播的交互。

至此,所有交互全部完成。

用上述方法可以制作很多網(wǎng)站流行的放大輪播效果。

 

本文由 @?bobowang 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖來(lái)自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 我的函數(shù)也有問(wèn)題······哎

    來(lái)自北京 回復(fù)
  2. 樓主你好,移動(dòng)時(shí)放大縮小的交互效果我已經(jīng)做出來(lái)了,但是圖片無(wú)法正常切換。。。。我感覺(jué)可能是我的中繼器函數(shù)設(shè)置的有問(wèn)題。。
    方便幫我看看原型嘛 ww

    來(lái)自北京 回復(fù)
    1. 來(lái)自北京 回復(fù)
  3. 那請(qǐng)問(wèn)如何制作點(diǎn)擊圖片跳轉(zhuǎn)鏈接呢

    來(lái)自河北 回復(fù)
  4. 個(gè)人 感覺(jué) 你用中繼器的方式 實(shí)現(xiàn)剛剛的那個(gè)APP 輪播 感覺(jué) 好麻煩 動(dòng)態(tài)面板實(shí)現(xiàn)會(huì)更加簡(jiǎn)潔 沒(méi)有你剛剛簡(jiǎn)述的面板問(wèn)題的那么多麻煩
    做了一個(gè) 大小輪播的測(cè)試 你看看 跟你想要的 有什么區(qū)別 輪播設(shè)置的自動(dòng) 目前鏈接:https://pan.baidu.com/s/1YIXddCaZVzcCojt51tdfgw
    提取碼:m8vx
    直接是RP文件

    來(lái)自四川 回復(fù)
    1. 兄弟,你這個(gè)確實(shí)不錯(cuò),我下載看了。

      來(lái)自河南 回復(fù)
    2. 你做的這個(gè)沒(méi)樓主做的齊全嗯,只是很簡(jiǎn)單的輪播

      來(lái)自四川 回復(fù)
    3. 只是一個(gè)簡(jiǎn)短的面板草圖 左右感應(yīng)滑動(dòng)也可以做的

      測(cè)試的目的只是證明 動(dòng)態(tài)面板是可以達(dá)到效果的

      來(lái)自四川 回復(fù)
  5. 你好,源文件可以分享一下嗎?我微信17612164484,謝啦

    來(lái)自上海 回復(fù)
    1. 點(diǎn)擊網(wǎng)盤(pán)鏈接 已經(jīng)是RP文件了

      來(lái)自四川 回復(fù)
专题
13274人已学习14篇文章
各种大模型和AI绘画的产品层出不穷,在各行业也在尝试进行应用。在这个阶段,AIGC能实现些什么?本专题的文章分享了AIGC的应用。
专题
15892人已学习12篇文章
采购管理是对采购业务过程进行组织、实施与控制的管理过程。本专题的文章提供了采购管理设计指南。
专题
14989人已学习13篇文章
在产品的商业模式中,广告变现占据了很大的比重,那么广告功能就是产品里面非常重要的功能之一。本专题的文章分享了如何搭建广告投放系统。
专题
15491人已学习12篇文章
虽然大厂们纷纷奔赴Web3.0,但是不少人还是对这个概念及相应生态一知半解。本专题的文章分享了对于web3的看法。
专题
13452人已学习13篇文章
增长模型是产品增长的通用思维框架。本专题的文章分享了如何构建增长模型。
专题
14676人已学习12篇文章
数据库对于产品经理来说是一个既熟悉又陌生的概念,虽然产品设计中的数据基本都要与数据库交互,但平时的工作中也很少接触到数据库的具体操作和细节。本专题的文章分享了数据库的基础知识。