国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【中秋國慶不斷更】OpenHarmony定義可動畫屬性:@AnimatableExtend裝飾器

這篇具有很好參考價值的文章主要介紹了【中秋國慶不斷更】OpenHarmony定義可動畫屬性:@AnimatableExtend裝飾器。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

【中秋國慶不斷更】OpenHarmony定義可動畫屬性:@AnimatableExtend裝飾器

@AnimatableExtend裝飾器用于自定義可動畫的屬性方法,在這個屬性方法中修改組件不可動畫的屬性。在動畫執(zhí)行過程時,通過逐幀回調(diào)函數(shù)修改不可動畫屬性值,讓不可動畫屬性也能實(shí)現(xiàn)動畫效果。

? ● 可動畫屬性:如果一個屬性方法在animation屬性前調(diào)用,改變這個屬性的值可以生效animation屬性的動畫效果,這個屬性稱為可動畫屬性。比如height、width、backgroundColor、translate等。

? ● 不可動畫屬性:如果一個屬性方法在animation屬性前調(diào)用,改變這個屬性的值不能生效animation屬性的動畫效果,這個屬性稱為不可動畫屬性。比如Text組件的fontSize屬性、Ployline組件的points屬性等。

說明:

該裝飾器從API Version 10開始支持。后續(xù)版本如有新增內(nèi)容,則采用上角標(biāo)單獨(dú)標(biāo)記該內(nèi)容的起始版本。

裝飾器使用說明

語法

@AnimatableExtend(UIComponentName) function functionName(value: typeName) { 
  .propertyName(value)
}

? ● @AnimatableExtend僅支持定義在全局,不支持在組件內(nèi)部定義。

? ● @AnimatableExtend定義的函數(shù)參數(shù)類型必須為number類型或者實(shí)現(xiàn) AnimtableArithmetic接口的自定義類型。

? ● @AnimatableExtend定義的函數(shù)體內(nèi)只能調(diào)用@AnimatableExtend括號內(nèi)組件的屬性方法。

AnimtableArithmetic接口說明

對復(fù)雜數(shù)據(jù)類型做動畫,需要實(shí)現(xiàn)AnimtableArithmetic接口中加法、減法、乘法和判斷相等函數(shù)。

名稱 入?yún)㈩愋?/th> 返回值類型 說明
plus AnimtableArithmetic AnimtableArithmetic 加法函數(shù)
subtract AnimtableArithmetic AnimtableArithmetic 減法函數(shù)
multiply number AnimtableArithmetic 乘法函數(shù)
equals AnimtableArithmetic boolean 相等判斷函數(shù)

使用場景

以下示例實(shí)現(xiàn)字體大小的動畫效果。

@AnimatableExtend(Text) function animatableFontSize(size: number) {
  .fontSize(size)
}

@Entry
@Component
struct AnimatablePropertyExample {
  @State fontSize: number = 20
  build() {
    Column() {
      Text("AnimatableProperty")
        .animatableFontSize(this.fontSize)
        .animation({duration: 1000, curve: "ease"})
      Button("Play")
        .onClick(() => {
          this.fontSize = this.fontSize == 20 ? 36 : 20
        })
    }.width("100%")
    .padding(10)
  }
}

【中秋國慶不斷更】OpenHarmony定義可動畫屬性:@AnimatableExtend裝飾器

以下示例實(shí)現(xiàn)折線的動畫效果。

class Point {
  x: number
  y: number

  constructor(x: number, y: number) {
    this.x = x
    this.y = y
  }
  plus(rhs: Point): Point {
    return new Point(this.x + rhs.x, this.y + rhs.y)
  }
  subtract(rhs: Point): Point {
    return new Point(this.x - rhs.x, this.y - rhs.y)
  }
  multiply(scale: number): Point {
    return new Point(this.x * scale, this.y * scale)
  }
  equals(rhs: Point): boolean {
    return this.x === rhs.x && this.y === rhs.y
  }
}

class PointVector extends Array<Point> implements AnimatableArithmetic<PointVector> {
  constructor(value: Array<Point>) {
    super();
    value.forEach(p => this.push(p))
  }
  plus(rhs: PointVector): PointVector {
    let result = new PointVector([])
    const len = Math.min(this.length, rhs.length)
    for (let i = 0; i < len; i++) {
      result.push((this as Array<Point>)[i].plus((rhs as Array<Point>)[i]))
    }
    return result
  }
  subtract(rhs: PointVector): PointVector {
    let result = new PointVector([])
    const len = Math.min(this.length, rhs.length)
    for (let i = 0; i < len; i++) {
      result.push((this as Array<Point>)[i].subtract((rhs as Array<Point>)[i]))
    }
    return result
  }
  multiply(scale: number): PointVector {
    let result = new PointVector([])
    for (let i = 0; i < this.length; i++) {
      result.push((this as Array<Point>)[i].multiply(scale))
    }
    return result
  }
  equals(rhs: PointVector): boolean {
    if (this.length != rhs.length) {
      return false
    }
    for (let i = 0; i < this.length; i++) {
      if (!(this as Array<Point>)[i].equals((rhs as Array<Point>)[i])) {
        return false
      }
    }
    return true
  }
  get(): Array<Object[]> {
    let result: Array<Object[]> = []
    this.forEach(p => result.push([p.x, p.y]))
    return result
  }
}

@AnimatableExtend(Polyline) function animatablePoints(points: PointVector) {
  .points(points.get())
}

@Entry
@Component
struct AnimatablePropertyExample {
  @State points: PointVector = new PointVector([
    new Point(50, Math.random() * 200),
    new Point(100, Math.random() * 200),
    new Point(150, Math.random() * 200),
    new Point(200, Math.random() * 200),
    new Point(250, Math.random() * 200),
  ])
  build() {
    Column() {
      Polyline()
        .animatablePoints(this.points)
        .animation({duration: 1000, curve: "ease"})
        .size({height:220, width:300})
        .fill(Color.Green)
        .stroke(Color.Red)
        .backgroundColor('#eeaacc')
      Button("Play")
        .onClick(() => {
          this.points = new PointVector([
            new Point(50, Math.random() * 200),
            new Point(100, Math.random() * 200),
            new Point(150, Math.random() * 200),
            new Point(200, Math.random() * 200),
            new Point(250, Math.random() * 200),
          ])
        })
    }.width("100%")
    .padding(10)
  }
}

【中秋國慶不斷更】OpenHarmony定義可動畫屬性:@AnimatableExtend裝飾器

本文由博客一文多發(fā)平臺 OpenWrite 發(fā)布!文章來源地址http://www.zghlxwxcb.cn/news/detail-710331.html

到了這里,關(guān)于【中秋國慶不斷更】OpenHarmony定義可動畫屬性:@AnimatableExtend裝飾器的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【中秋國慶不斷更】HarmonyOS對通知類消息的管理與發(fā)布通知(上)

    【中秋國慶不斷更】HarmonyOS對通知類消息的管理與發(fā)布通知(上)

    應(yīng)用可以通過通知接口發(fā)送通知消息,終端用戶可以通過通知欄查看通知內(nèi)容,也可以點(diǎn)擊通知來打開應(yīng)用。 通知常見的使用場景: ? ● 顯示接收到的短消息、即時消息等。 ? ● 顯示應(yīng)用的推送消息,如廣告、版本更新等。 ? ● 顯示當(dāng)前正在進(jìn)行的事件,如下載等。

    2024年02月08日
    瀏覽(20)
  • 【中秋國慶不斷更】XML在HarmonyOS中的生成,解析與轉(zhuǎn)換(下)

    對于以XML作為載體傳遞的數(shù)據(jù),實(shí)際使用中需要對相關(guān)的節(jié)點(diǎn)進(jìn)行解析,一般包括解析XML標(biāo)簽和標(biāo)簽值、解析XML屬性和屬性值、解析XML事件類型和元素深度三類場景。 XML模塊提供XmlPullParser類對XML文件解析,輸入為含有XML文本的ArrayBuffer或DataView,輸出為解析得到的信息。 表

    2024年02月08日
    瀏覽(16)
  • 國慶中秋特輯(四)MySQL如何性能調(diào)優(yōu)?上篇

    國慶中秋特輯(四)MySQL如何性能調(diào)優(yōu)?上篇

    國慶中秋特輯系列文章: 國慶中秋特輯(八)Spring Boot項(xiàng)目如何使用JPA 國慶中秋特輯(七)Java軟件工程師常見20道編程面試題 國慶中秋特輯(六)大學(xué)生常見30道寶藏編程面試題 國慶中秋特輯(五)MySQL如何性能調(diào)優(yōu)?下篇 國慶中秋特輯(四)MySQL如何性能調(diào)優(yōu)?上篇 國慶

    2024年02月08日
    瀏覽(22)
  • 國慶中秋特輯(五)MySQL如何性能調(diào)優(yōu)?下篇

    國慶中秋特輯(五)MySQL如何性能調(diào)優(yōu)?下篇

    國慶中秋特輯系列文章: 國慶中秋特輯(八)Spring Boot項(xiàng)目如何使用JPA 國慶中秋特輯(七)Java軟件工程師常見20道編程面試題 國慶中秋特輯(六)大學(xué)生常見30道寶藏編程面試題 國慶中秋特輯(五)MySQL如何性能調(diào)優(yōu)?下篇 國慶中秋特輯(四)MySQL如何性能調(diào)優(yōu)?上篇 國慶

    2024年02月08日
    瀏覽(23)
  • 國慶中秋特輯(八)Spring Boot項(xiàng)目如何使用JPA

    國慶中秋特輯(八)Spring Boot項(xiàng)目如何使用JPA

    國慶中秋特輯系列文章: 國慶中秋特輯(八)Spring Boot項(xiàng)目如何使用JPA 國慶中秋特輯(七)Java軟件工程師常見20道編程面試題 國慶中秋特輯(六)大學(xué)生常見30道寶藏編程面試題 國慶中秋特輯(五)MySQL如何性能調(diào)優(yōu)?下篇 國慶中秋特輯(四)MySQL如何性能調(diào)優(yōu)?上篇 國慶

    2024年02月08日
    瀏覽(25)
  • OpenHarmony UI動畫-lottie

    OpenHarmony UI動畫-lottie

    lottie是一個適用于OpenHarmony的動畫庫,它可以解析Adobe After Effects軟件通過Bodymovin插件導(dǎo)出的json格式的動畫,并在移動設(shè)備上進(jìn)行本地渲染。 OpenHarmony ohpm 環(huán)境配置等更多內(nèi)容,請參考如何安裝 OpenHarmony ohpm 包 前提:數(shù)據(jù)準(zhǔn)備 lottie動畫文件是由設(shè)計(jì)人員使用Adobe After Effects軟件

    2024年04月28日
    瀏覽(22)
  • OpenHarmony系統(tǒng)解決方案 - 配置屏幕方向?qū)е麻_機(jī)動畫和Launcher顯示異常

    OpenHarmony系統(tǒng)解決方案 - 配置屏幕方向?qū)е麻_機(jī)動畫和Launcher顯示異常

    問題環(huán)境 系統(tǒng)版本:OpenHarmony-3.2-Release 問題現(xiàn)象 配置設(shè)備默認(rèn)方向,例如修改為橫屏顯示,修改文件 display_manager_config.xml 的 buildInDefaultOrientation 參數(shù)值為 2 (Orientation::HORIZONTAL)。 源碼中文件位于foundation/window/window_manager/resources/config/rk3568/display_manager_config.xml。 系統(tǒng)中文件位

    2024年02月21日
    瀏覽(23)
  • android 動畫之屬性動畫

    概述 前面給我們分析了Android中的補(bǔ)間動畫與幀動畫的用法。 android 動畫之補(bǔ)間動畫與幀動畫 接下來介紹屬性動畫的用法。 一、屬性動畫與補(bǔ)間動畫的區(qū)別 1、 補(bǔ)間動畫只能作用于View上,如TextView、ImageView等,但是不能作用于View之外的對象上(如顏色、字體大小等)。而補(bǔ)

    2024年02月08日
    瀏覽(20)
  • 【HarmonyOS】【應(yīng)用開發(fā)】動畫-屬性動畫與顯式動畫

    (一)、定義 ??官網(wǎng)對于屬性動畫的定義如下: 組件的某些通用屬性變化時,可以通過屬性動畫實(shí)現(xiàn)漸變過渡效果,提升用戶體驗(yàn)。支持的屬性包括width、height、backgroundColor、opacity、scale、rotate、translate等 ??個人理解:屬性動畫針對的是同一個組件的屬性變化情況,如

    2024年02月02日
    瀏覽(16)
  • 屬性動畫實(shí)現(xiàn)旋轉(zhuǎn)入場效果

    屬性動畫和硬件加速 日常雜談 06月07日 首先,我感覺這部分內(nèi)容真的挺無聊的,沒有什么讓人新奇的感覺。不過為了博客的整體性,我還是想隨便整理一下相關(guān)的知識和內(nèi)容。 一如既往,聊聊我的日常生活,最近可能比較忙,所以可能沒有那么多大段的時間來寫博客。只能

    2024年02月08日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包