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

bobowang
10 評(píng)論 9141 瀏覽 34 收藏 15 分鐘

本文以“人人都是產(chǎn)品經(jīng)理”手機(jī)app原型為例,講解輪播過程中的,側(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開窗慣用的形式,具體特點(diǎn):

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

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

(3)進(jìn)入頁(yè)面后自動(dòng)輪播,支持左右拖動(dòng),拖動(dòng)結(jié)束后,若無繼續(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),來達(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)開關(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è)圖片排成一排,中間略有隔開,其中第二張圖片(命名2)調(diào)整為樣例中主圖片大?。ㄔ椭兄鲌D片尺寸為寬316×高159),其他四張圖片的高度比圖片2矮一些(原型中其他圖片尺寸為寬366×高144)。

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

具體過程看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張圖片。

具體過程看GIF,這步非常重要。

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

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

以Case1 為例:

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

解釋: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)容。

解釋:因?yàn)橹拔覀冎谱鞯膭?dòng)態(tài)面板里的圖片都是元件圖標(biāo),沒有導(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)過”,因?yàn)檫@樣的話不用設(shè)置y坐標(biāo),加上線性動(dòng)畫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è)置原來是大圖的圖片2高度變小,原來是小圖的圖片3變大。

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

如果強(qiáng)調(diào)“先后性”,即在500毫秒動(dòng)畫結(jié)束后,進(jìn)行接下來的動(dòng)作,那么必須在兩個(gè)動(dòng)作之間加入>500毫秒的等待時(shí)長(zhǎng)。因?yàn)榻酉聛淼牡谒牟浇换ナ且谏鲜鰟?dòng)作全部完結(jié)后再進(jìn)行,所以要加入550毫秒的等待。

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

為中繼器更新行,更新條件為[[TargetItem.index==1]]即中繼器的第一行,注意上面所說的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è)谕瓿晌恢弥嘏藕?,將提前播放的圖片4再拉回去。注意動(dòng)畫要選無。

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

到這步,向左滑動(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)里沒有任何內(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)輪播的效果,接下來,我們來實(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)載

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

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

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

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

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

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

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

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

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

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

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

      來自四川 回復(fù)
专题
14703人已学习14篇文章
用户生命周期是每个产品经理都必须要注意的一个点,它能够衡量用户对产品产生的价值,也是运营手段的最终衡量指标。本专题的文章分享了如何做好用户生命周期管理。
专题
12192人已学习14篇文章
随着科技的发展,AI技术渗透进各个行业里边,AI图像生成和识别技术有了更大的突破性,本专题的文章分享了AI图像识别。
专题
18008人已学习15篇文章
本专题的文章分享了Android和iOS在产品、设计、交互等方面的差异。
专题
15846人已学习13篇文章
生活中,我们会看到路标、指示面板、箭头指引诸如此类的常见的导航,其实网络中也有很多导航指引。导航有什么用呢?导航设计又要遵循什么规范?本专题的文章分享了导航设计指南。
专题
37436人已学习23篇文章
不知道这些问题,你出去都不敢说自己是做电商运营的。