在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在OpenHarmony上實(shí)現(xiàn)彈性動(dòng)效的方法

OpenHarmony技術(shù)社區(qū) ? 來(lái)源:OST開(kāi)源開(kāi)發(fā)者 ? 2023-06-11 15:12 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在動(dòng)畫(huà)開(kāi)發(fā)場(chǎng)景中,經(jīng)常用到彈性效果,尤其在拖拽某個(gè)對(duì)象時(shí)經(jīng)常伴隨彈性動(dòng)效。

OpenHarmony 提供了三種彈簧動(dòng)畫(huà)曲線用來(lái)實(shí)現(xiàn)彈性效果,本例將為大家介紹這三種曲線的用法。

最終效果如下:

2b1ce6cc-0826-11ee-962d-dac502259ad0.gif

運(yùn)行環(huán)境

本例基于以下環(huán)境開(kāi)發(fā),開(kāi)發(fā)者也可以基于其他適配的版本進(jìn)行開(kāi)發(fā):

IDE:DevEco Studio 3.1 Beta2

SDK:Ohos_sdk_public 3.2.11.9(API Version 9 Release)

實(shí)現(xiàn)思路

本例主要用到以下三種彈簧動(dòng)畫(huà)曲線:

curves.springCurve:通過(guò)設(shè)置彈簧的初始速度、質(zhì)量、剛度和阻尼來(lái)控制彈簧動(dòng)畫(huà)的效果。對(duì)應(yīng)本例中 springCurve 按鈕觸發(fā)的動(dòng)畫(huà)。

curves.springMotion:通過(guò)設(shè)置彈簧震動(dòng)時(shí)間和阻尼來(lái)控制彈簧動(dòng)畫(huà)的效果。對(duì)應(yīng)本例中 springMotion 按鈕觸發(fā)的動(dòng)畫(huà)。

curves.responsiveSpringMotion:構(gòu)造彈性跟手動(dòng)畫(huà)曲線對(duì)象,是springMotion的一種特例,僅默認(rèn)參數(shù)不同,可與 springMotion 混合使用。用來(lái)實(shí)現(xiàn)拖拽動(dòng)畫(huà)。

開(kāi)發(fā)步驟

①搭建 UI 框架

樣例中有兩個(gè)按鈕,一個(gè)圖片。內(nèi)容整體縱向分布,兩個(gè)按鈕橫向分布。縱向布局可以采用 Column 組件,橫向布局可以采用 Row 組件。

代碼如下:

@Entry
@Component
structImageComponent{
build(){
Column(){
Row(){
Button('springCurve')
.margin({right:10})
.fontSize(20)
.backgroundColor('#18183C')
Button('springMotion')
.fontSize(20)
.backgroundColor('#18183C')
}
.margin({top:30})

Image($r("app.media.contact2"))
.width(100)
.height(100)
}.width("100%").height("100%").backgroundColor('#A4AE77')
}
}
②為 springCurve 按鈕添加 curves.springCurve 的曲線動(dòng)畫(huà)。
...
//定義狀態(tài)變量translateY,用來(lái)控制笑臉圖像的位移
@StatetranslateY:number=0
...
Button('springCurve')
.margin({right:10})
.fontSize(20)
.backgroundColor('#18183C')
//綁定點(diǎn)擊事件
.onClick(()=>{
//在點(diǎn)擊事件中添加顯示動(dòng)畫(huà)
animateTo({
duration:2000,
//設(shè)定curves.springCurve為動(dòng)畫(huà)曲線
curve:curves.springCurve(100,10,80,10)
},
()=>{
//改變translateY的值,使笑臉圖像發(fā)生位移
this.translateY=-20
})
this.translateY=0
})
...
Image($r("app.media.contact2"))
.width(100)
.height(100)
//為笑臉圖像添加位移屬性,以translateY為參數(shù)
.translate({y:this.translateY})
...
效果如下:

2ba2ebdc-0826-11ee-962d-dac502259ad0.gif

③為 springMotion 按鈕添加 curves.springMotion 曲線動(dòng)畫(huà)。

這里通過(guò) position 屬性控制 springMotion 按鈕的移動(dòng),當(dāng)然開(kāi)發(fā)者也可以繼續(xù)選擇使用 translate 屬性。

...
//定義狀態(tài)變量translateY,用來(lái)控制笑臉圖像的位置變化
@StateimgPos:{
x:number,
y:number
}={x:125,y:400}
...
Button('springMotion')
.fontSize(20)
.backgroundColor('#18183C')
//綁定點(diǎn)擊事件
.onClick(()=>{
//在點(diǎn)擊事件中添加顯示動(dòng)畫(huà)
animateTo({
duration:15,
//設(shè)定curves.springMotion為動(dòng)畫(huà)曲線
curve:curves.springMotion(0.5,0.5),
onFinish:()=>{
animateTo({duration:500,
curve:curves.springMotion(0.5,0.5),},()=>{
//動(dòng)畫(huà)結(jié)束時(shí)笑臉圖像位置還原
this.imgPos={x:125,y:400}
})
}
},()=>{
//改變笑臉圖像位置,y軸位置由400,變?yōu)?50
this.imgPos={x:125,y:150}
})
})
...
Image($r("app.media.contact2"))
.width(100)
.height(100)
.translate({y:this.translateY})
//為笑臉圖像添加位置屬性,以imgPos為參數(shù)
.position(this.imgPos)
...
效果如下:

2be677f8-0826-11ee-962d-dac502259ad0.gif

④使用 curves.responsiveSpringMotion 為笑臉圖像添加拖拽動(dòng)畫(huà)。
...
Image($r("app.media.contact2"))
.width(100)
.height(100)
.translate({y:this.translateY})
.position(this.imgPos)
//綁定觸摸事件
.onTouch((event:TouchEvent)=>{
//當(dāng)觸摸放開(kāi)時(shí),笑臉圖像位置還原
if(event.type==TouchType.Up){
animateTo({
duration:50,
delay:0,
curve:curves.springMotion(),
onFinish:()=>{
}
},()=>{
this.imgPos={x:125,y:400}
})
}else{
//觸摸過(guò)程中觸發(fā)跟手動(dòng)畫(huà)
animateTo({
duration:50,
delay:0,
//設(shè)定跟手動(dòng)畫(huà)曲線
curve:curves.responsiveSpringMotion(),
onFinish:()=>{
}
},()=>{
//根據(jù)觸點(diǎn)位置改變笑臉圖像位置,從而實(shí)現(xiàn)跟手動(dòng)畫(huà)
this.imgPos={
x:event.touches[0].screenX-100/2,
y:event.touches[0].screenY-100/2
}
})
}
})
...
效果如下:

2c0585f8-0826-11ee-962d-dac502259ad0.gif??

完整代碼

本例完整代碼如下:

importcurvesfrom'@ohos.curves';

@Entry
@Component
structImageComponent{
//定義狀態(tài)變量translateY,用來(lái)控制笑臉圖像的位移
@StatetranslateY:number=0
//定義狀態(tài)變量translateY,用來(lái)控制笑臉圖像的位置變化
@StateimgPos:{
x:number,
y:number
}={x:125,y:400}

build(){
Column(){
Row(){
Button('springCurve')
.margin({right:10})
.fontSize(20)
.backgroundColor('#18183C')
//綁定點(diǎn)擊事件
.onClick(()=>{
//在點(diǎn)擊事件中添加顯示動(dòng)畫(huà)
animateTo({
duration:2000,
//設(shè)定curves.springCurve為動(dòng)畫(huà)曲線
curve:curves.springCurve(100,10,80,10)
},
()=>{
//改變translateY的值,使笑臉圖像發(fā)生位移
this.translateY=-20
})
this.translateY=0
})
Button('springMotion')
.fontSize(20)
.backgroundColor('#18183C')
//綁定點(diǎn)擊事件
.onClick(()=>{
//在點(diǎn)擊事件中添加顯示動(dòng)畫(huà)
animateTo({
duration:15,
//設(shè)定curves.springMotion為動(dòng)畫(huà)曲線
curve:curves.springMotion(0.5,0.5),
onFinish:()=>{
animateTo({duration:500,
curve:curves.springMotion(0.5,0.5),},()=>{
//動(dòng)畫(huà)結(jié)束時(shí)笑臉圖像位置還原
this.imgPos={x:125,y:400}
})
}
},()=>{
//改變笑臉圖像位置,y軸位置由400,變?yōu)?50
this.imgPos={x:125,y:150}
})
})
}
.margin({top:30})

Image($r("app.media.contact2"))
.width(100)
.height(100)
//為笑臉圖像添加位移屬性,以translateY為參數(shù)
.translate({y:this.translateY})
//為笑臉圖像添加位置屬性,以imgPos為參數(shù)
.position(this.imgPos)
//綁定觸摸事件
.onTouch((event:TouchEvent)=>{
//當(dāng)觸摸放開(kāi)時(shí),笑臉圖像位置還原
if(event.type==TouchType.Up){
animateTo({
duration:50,
delay:0,
curve:curves.springMotion(),
onFinish:()=>{
}
},()=>{
this.imgPos={x:125,y:400}
})
}else{
//觸摸過(guò)程中觸發(fā)跟手動(dòng)畫(huà),同樣通過(guò)animateTo實(shí)現(xiàn)動(dòng)畫(huà)效果
animateTo({
duration:50,
delay:0,
//設(shè)定跟手動(dòng)畫(huà)曲線
curve:curves.responsiveSpringMotion(),
onFinish:()=>{
}
},()=>{
//根據(jù)觸點(diǎn)位置改變笑臉圖像位置,從而實(shí)現(xiàn)跟手動(dòng)畫(huà)
this.imgPos={
x:event.touches[0].screenX-100/2,
y:event.touches[0].screenY-100/2
}
})
}
})
}.width("100%").height("100%").backgroundColor('#A4AE77')
}
}



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 觸摸屏
    +關(guān)注

    關(guān)注

    42

    文章

    2383

    瀏覽量

    118380
  • OpenHarmony
    +關(guān)注

    關(guān)注

    29

    文章

    3847

    瀏覽量

    18444

原文標(biāo)題:OpenHarmony上實(shí)現(xiàn)彈性動(dòng)效

文章出處:【微信號(hào):gh_834c4b3d87fe,微信公眾號(hào):OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    家庭、單位用電安全,需要“彈性范圍內(nèi)、彈性連接”的接線端子

    出螺絲端部對(duì)導(dǎo)線的壓力0.549--1.16KN,實(shí)測(cè)的壓力數(shù)據(jù)35---90公斤之間,測(cè)試的工具與方法不同,數(shù)值會(huì)有偏差,從定性的角度說(shuō)明壓力值還是比較大的。2、彈性范圍內(nèi)的
    發(fā)表于 03-19 15:25

    動(dòng)設(shè)計(jì)的這些設(shè)計(jì)流程你知道嗎

    交互設(shè)計(jì)師想要認(rèn)真和你聊聊動(dòng)設(shè)計(jì)
    發(fā)表于 02-25 06:39

    OpenHarmony 3.1 Beta版本關(guān)鍵特性解析——OpenHarmony圖形框架

    繪制與渲染流程解決了跨窗口聯(lián)動(dòng)問(wèn)題后,上面示例中桌面和壁紙模糊效果呈現(xiàn)時(shí),也能同步看到壁紙的動(dòng),如下:此外,OpenHarmony 圖形棧從時(shí)間和空間提供了更豐富的
    發(fā)表于 04-13 18:24

    為什么要在OpenHarmony設(shè)備安裝Dropbear呢

    HDC足夠大多數(shù)人的需求。但你如果更喜歡使用ssh協(xié)議,或者有更多高級(jí)需求例如基于網(wǎng)絡(luò)進(jìn)行連接,支持密碼認(rèn)證,提供安全可信的加密通道多臺(tái)開(kāi)發(fā)機(jī)或設(shè)備同時(shí)連接OpenHarmony設(shè)備使用WinSCP
    發(fā)表于 05-23 17:45

    app圖標(biāo)動(dòng)openharmony的源碼哪里實(shí)現(xiàn)的?

    openharmony點(diǎn)擊一個(gè)app圖標(biāo)的之后,應(yīng)用會(huì)從左上角一點(diǎn)點(diǎn)放大直至鋪滿屏幕;我想問(wèn)一下這個(gè)動(dòng)openharmony的源碼
    發(fā)表于 06-10 11:01

    網(wǎng)絡(luò)組件axios可以OpenHarmony使用了

    網(wǎng)絡(luò)組件axios可以OpenHarmony使用了什么是axios上古瀏覽器頁(yè)面向服務(wù)器請(qǐng)求數(shù)據(jù)時(shí),因?yàn)榉祷氐氖钦麄€(gè)頁(yè)面的數(shù)據(jù),頁(yè)面都會(huì)強(qiáng)制刷新一下,這對(duì)于用戶來(lái)講并不是很友好。
    發(fā)表于 08-29 12:11

    開(kāi)源圖形驅(qū)動(dòng)OpenHarmony的使用和落地

    。 03?開(kāi)源圖形驅(qū)動(dòng)OpenHarmony的移植 OpenHarmony驅(qū)動(dòng)框架支持多種接入模式,能夠實(shí)現(xiàn)南向硬件的快速部署。其中,
    發(fā)表于 08-31 18:07

    FAT32的文件隱藏方法Linux實(shí)現(xiàn)

    FAT32的文件隱藏方法Linux實(shí)現(xiàn)
    發(fā)表于 10-31 11:31 ?17次下載
    FAT32的文件隱藏<b class='flag-5'>方法</b>及<b class='flag-5'>在</b>Linux<b class='flag-5'>上</b>的<b class='flag-5'>實(shí)現(xiàn)</b>

    云計(jì)算彈性評(píng)測(cè)模型的研究與實(shí)現(xiàn)

    問(wèn)題,從資源分配、QoS、資源配置時(shí)間等多個(gè)角度,對(duì)云計(jì)算的彈性進(jìn)行較為全面的分析,提出適用于供應(yīng)商和用戶兩個(gè)角度的評(píng)測(cè)方法已有基礎(chǔ),提出資源分配、資源配置時(shí)間兩個(gè)方面的計(jì)算模型
    發(fā)表于 11-27 14:42 ?0次下載

    基于距離徙動(dòng)校正的彈速補(bǔ)償FPGA實(shí)現(xiàn)方法

    針對(duì)高速運(yùn)動(dòng)平臺(tái)彈速補(bǔ)償?shù)膶?shí)時(shí)性要求,基于距離徙動(dòng)校正(Range Cell Migration Compensation,RCMC) 的思想上提出了一種彈速補(bǔ)償?shù)腇PGA實(shí)現(xiàn)方法
    發(fā)表于 03-30 09:56 ?2937次閱讀
    基于距離徙<b class='flag-5'>動(dòng)</b>校正的彈速補(bǔ)償FPGA<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>方法</b>

    華為圖像服務(wù)場(chǎng)景動(dòng)Java示例代碼

    簡(jiǎn)介 場(chǎng)景動(dòng)服務(wù)提供基礎(chǔ)動(dòng)和高級(jí)動(dòng),幫助您實(shí)現(xiàn)
    發(fā)表于 03-23 11:06 ?0次下載

    OpenHarmony生態(tài)論壇:支付終端OpenHarmony的安全框架

    OpenHarmony生態(tài)論壇:支付終端OpenHarmony的安全框架
    的頭像 發(fā)表于 04-25 17:29 ?1694次閱讀
    <b class='flag-5'>OpenHarmony</b>生態(tài)論壇:支付終端<b class='flag-5'>在</b><b class='flag-5'>OpenHarmony</b><b class='flag-5'>上</b>的安全框架

    OpenHarmony生態(tài)論壇:UROVOOpenHarmony的規(guī)劃和實(shí)踐

    OpenHarmony生態(tài)論壇:UROVOOpenHarmony的規(guī)劃和實(shí)踐
    的頭像 發(fā)表于 04-25 17:33 ?1504次閱讀
    <b class='flag-5'>OpenHarmony</b>生態(tài)論壇:UROVO<b class='flag-5'>在</b><b class='flag-5'>OpenHarmony</b><b class='flag-5'>上</b>的規(guī)劃和實(shí)踐

    如何在OpenHarmony實(shí)現(xiàn)?翻頁(yè)動(dòng)呢?

    翻頁(yè)動(dòng)是應(yīng)用開(kāi)發(fā)中常見(jiàn)的動(dòng)場(chǎng)景,常見(jiàn)的如書(shū)籍翻頁(yè)、日歷翻頁(yè)等。
    的頭像 發(fā)表于 06-11 15:15 ?1039次閱讀
    如何在<b class='flag-5'>OpenHarmony</b><b class='flag-5'>上</b><b class='flag-5'>實(shí)現(xiàn)</b>?翻頁(yè)<b class='flag-5'>動(dòng)</b><b class='flag-5'>效</b>呢?

    OpenHarmony實(shí)戰(zhàn)開(kāi)發(fā)-如何實(shí)現(xiàn)組件動(dòng)畫(huà)。

    ArkUI為組件提供了通用的屬性動(dòng)畫(huà)和轉(zhuǎn)場(chǎng)動(dòng)畫(huà)能力的同時(shí),還為一些組件提供了默認(rèn)的動(dòng)畫(huà)效果。例如,List的滑動(dòng)動(dòng),Button的點(diǎn)擊動(dòng),是組件自帶的默認(rèn)動(dòng)畫(huà)效果。組件默認(rèn)動(dòng)畫(huà)效
    的頭像 發(fā)表于 04-28 15:49 ?906次閱讀
    <b class='flag-5'>OpenHarmony</b>實(shí)戰(zhàn)開(kāi)發(fā)-如何<b class='flag-5'>實(shí)現(xiàn)</b>組件動(dòng)畫(huà)。
    主站蜘蛛池模板: 国产欧美色图 | 天天色天天爽 | 色狠狠网 | 五月花亚洲 | 亚洲免费视频观看 | 国产黄色高清视频 | 高清在线免费观看 | 777人体粉嫩u美图 | 天天干夜啪 | 国产在线观看黄 | 国产午夜精品理论片 | 欧美日本一区二区三区生 | 亚洲欧美综合一区二区三区四区 | 2021国产成人精品久久 | 毛片一区二区三区 | 久久亚洲精品成人综合 | 午夜激情福利网 | 日本精品一卡二卡≡卡四卡 | 色多多免费视频观看区一区 | 伊人久久大香线蕉电影院 | 免费午夜视频在线观看 | 亚洲视频一区二区三区 | 婷婷97狠狠的狠狠的爱 | 国产片翁熄系列乱在线视频 | 女人牲交一级毛片 | 最新黄色大片 | 色老久久精品偷偷鲁一区 | 五月天亚洲婷婷 | 56pao强力打造 | 亚洲第一网站 | 免费观看老外特级毛片 | 欧美三级手机在线 | 久久国产成人午夜aⅴ影院 久久国产福利 | 免费一级毛片女人图片 | www色视频 | 久久黄网站 | 国内夫妇交换性经过实录 | 天天精品视频 | 日韩一二三级 | 欧美成人天天综合在线视色 | 日韩免费三级电影 |