鴻蒙Next開發(fā)實戰(zhàn)教程:實現(xiàn)抖音長按快速評論特效

開篇點題镶奉,今天玩點花的。

不知道大家有沒有發(fā)現(xiàn)资铡,抖音上的評論鍵長按會彈出一排表情框用于快速評論,不過現(xiàn)在鴻蒙原生版的抖音還沒有這個功能幢码,今天幽藍(lán)君就小試牛刀笤休,在鴻蒙上做一下這個功能,也是應(yīng)一位友友的私信要求症副。

不過幽藍(lán)君學(xué)藝不精店雅,水平有限,只能模仿個三分像贞铣,僅供大家參考闹啦。

話不多說,直接看成品效果圖:

image.png

實話實說辕坝,真的是有點難窍奋,昨晚搞到零點一刻,一度崩潰酱畅。關(guān)于這個功能的實現(xiàn)過程琳袄,還聽幽藍(lán)君細(xì)細(xì)道來。

首先你看這個彈出框纺酸,它并不存在于頁面之中窖逗,因為在彈出之后整個頁面是有蒙版的,除了它之外所有按鍵不能點擊餐蔬,所以它其實是一個彈框碎紊,我選擇使用CustomDialogController來實現(xiàn)在张。

那么問題來了,CustomDialogController覆蓋在頁面上方矮慕,怎么做才能讓這一排表情看起來像是從評論按鈕里彈出呢帮匾?

幽藍(lán)君的實現(xiàn)思路是這樣的,將彈框的起始位置設(shè)置在評論按鈕上痴鳄,彈框的尺寸尤其是寬度設(shè)置為0瘟斜,在動畫的過程中,讓彈框的x坐標(biāo)不斷左移痪寻,同時寬度增加螺句,這樣看起來就像是從評論按鈕中滑出來。

相關(guān)代碼如下:

Flex({ direction: FlexDirection.Row,justifyContent:FlexAlign.SpaceEvenly,alignItems:ItemAlign.Center }) {
})
.width(this.menuWidth)
.height(60)
.opacity(this.alpha)
.position({ x: this.menuX })
.backgroundColor('rgb(22,22,22)')
.animation({ duration: 300, curve: Curve.Linear, iterations: 1 })
.onAppear(()=>{  
  this.menuX = 0  this.menuWidth = 200
})

彈出動畫做完了橡类,內(nèi)容部分很簡單蛇尚,就幾個表情,下面要做的事情是長按表情放大顾画,不僅長按會放大取劫,長按之后滑動到表情上也會放大,所以我判斷這是一個組合手勢研侣,長按手勢和滑動手勢的組合谱邪。

這個組合手勢也有前后順序,只有長按開始之后的滑動才會有放大效果庶诡。

所以我的實現(xiàn)邏輯是這樣的惦银,給單個表情添加長按放大手勢祥诽,給整個彈框添加觸摸手勢onTouch僧诚,根據(jù)它返回的坐標(biāo)確定當(dāng)前的表情,為了提高精度牺弹,我對坐標(biāo)進(jìn)行了判斷喇澡,只有滑動到表情中間才會觸發(fā)放大效果迅栅。相關(guān)代碼如下:

//表情長按
.gesture(  
  LongPressGesture({ repeat: false })    
  .onAction((event: GestureEvent) => {      
    this.bigIndex = index      
    this.longPress = true   
   })    
)
//長按之后滑動
.onTouch((event?: TouchEvent) => {  
  if(event && this.longPress){    
    if(event.touches[0].x > 0 && event.touches[0].x < 200){      
      if(event.touches[0].y > 25 && event.touches[0].y < 35){        
        let ys = event.touches[0].x%50        
        if(ys > 20 && ys < 40){          
           this.bigIndex = Math.floor(event.touches[0].x/50)        
         }     
       }    
     }  
   }
 })

接下來,最難的部分來了撩幽,點擊表情進(jìn)行評論的時候库继,除了彈框消失以外箩艺,它還有一個發(fā)射的效果窜醉,發(fā)射一串表情到評論按鈕里,這玩意怎么實現(xiàn)呢艺谆。

首先想到的是路徑動畫motionPath榨惰,最終也確實是用它實現(xiàn),不過過程沒那么容易静汤,因為我們這個效果是出場的時候不觸發(fā)琅催,退出的時候觸發(fā)動畫居凶。但是motionPath這個東西并不支持像按鈕點擊主動觸發(fā),只能通過尺寸或者位置的變化來觸發(fā)藤抡,官方管這叫設(shè)計哲學(xué)侠碧。。缠黍。

我的實現(xiàn)思路是這樣的弄兜,在點擊某個表情之后,在對應(yīng)的位置創(chuàng)建三個相同的表情瓷式,然后依次發(fā)射出去替饿,但是又怎么實現(xiàn)依次發(fā)射的效果呢。使用計時器嗎贸典,效果并不好视卢,最后發(fā)現(xiàn)在animation上設(shè)置不同的動畫時間可以實現(xiàn)想要的效果:

Text(this.emoList[this.toggleIndex])  
  .fontSize(this.toggleSize)  
  .motionPath({ path: this.animatePath, from: 0.0, to: 1.0, rotatable: false })  
  .position({x:this.toggleX,y:0})  
  .animation({ duration: this.duration, curve: Curve.EaseIn, iterations: 1 })

以上就是今天內(nèi)容的整個實現(xiàn)過程,其實它從技術(shù)角度上并不難廊驼,難的是實現(xiàn)思路和方法据过,這就好比華為推出三折疊手機(jī)之后很多友商也要推出三折疊了,在這之前你怎么不造呢妒挎,因為華為的專利沒有公布蝶俱。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市饥漫,隨后出現(xiàn)的幾起案子榨呆,更是在濱河造成了極大的恐慌,老刑警劉巖庸队,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件积蜻,死亡現(xiàn)場離奇詭異,居然都是意外死亡彻消,警方通過查閱死者的電腦和手機(jī)竿拆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宾尚,“玉大人丙笋,你說我怎么就攤上這事』吞” “怎么了御板?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長牛郑。 經(jīng)常有香客問我怠肋,道長,這世上最難降的妖魔是什么淹朋? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任笙各,我火速辦了婚禮钉答,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘杈抢。我一直安慰自己数尿,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布惶楼。 她就那樣靜靜地躺著砌创,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鲫懒。 梳的紋絲不亂的頭發(fā)上嫩实,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天,我揣著相機(jī)與錄音窥岩,去河邊找鬼甲献。 笑死,一個胖子當(dāng)著我的面吹牛颂翼,可吹牛的內(nèi)容都是我干的晃洒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼朦乏,長吁一口氣:“原來是場噩夢啊……” “哼球及!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起呻疹,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤吃引,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后刽锤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體镊尺,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年并思,在試婚紗的時候發(fā)現(xiàn)自己被綠了庐氮。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡宋彼,死狀恐怖弄砍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情输涕,我是刑警寧澤音婶,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站占贫,受9級特大地震影響桃熄,放射性物質(zhì)發(fā)生泄漏先口。R本人自食惡果不足惜型奥,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一瞳收、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧厢汹,春花似錦螟深、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至搭综,卻和暖如春垢箕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背兑巾。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工条获, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蒋歌。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓帅掘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親堂油。 傳聞我的和親對象是個殘疾皇子修档,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內(nèi)容