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

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

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

自定義HarmonyOS啟動(dòng)頁組件

ITMING ? 來源:ITMING ? 作者:ITMING ? 2023-02-17 13:00 ? 次閱讀

啟動(dòng)頁作為應(yīng)用程序首次出現(xiàn)的頁面,該頁面提供一些預(yù)加載數(shù)據(jù)的提前獲取,防止應(yīng)用程序出現(xiàn)白屏等異常,如是否第一次訪問應(yīng)用程序并開啟應(yīng)用歡迎頁;判斷用戶登錄信息進(jìn)行頁面跳轉(zhuǎn);消息信息懶加載等。

常見啟動(dòng)頁參數(shù)如下表所示:

屬性 類型 描述 必填
timer number 倒計(jì)時(shí)時(shí)長,默認(rèn)3秒 Y
isLogo boolean 顯示圖片類型。
false:常規(guī)圖,默認(rèn);
true:logo圖
N
backgroundImg ResourceStr 顯示圖片地址 N
companyName string 企業(yè)名稱 N
mfontColor ResourceColor 企業(yè)名稱字體顏色 N

常見啟動(dòng)頁方法如下表所示:

方法 類型 描述 必填
skip void 跳轉(zhuǎn)方法 Y

封裝啟動(dòng)頁參數(shù)類代碼如下所示:

export class Splash {
  // 倒計(jì)時(shí)時(shí)長
  timer: number;
  // 顯示Logo
  isLogo?: boolean = false;
  // 頁面顯示圖片
  backgroundImg?: ResourceStr;
  // 企業(yè)名稱
  companyName?: string;
  // 企業(yè)名稱字體顏色
  mFontColor?: ResourceColor;

  constructor(timer: number, isLogo?: boolean, backgroundImg?: ResourceStr,
              companyName?: string, mFontColor?: ResourceColor) {
    this.timer = timer;
    this.isLogo = isLogo;
    this.backgroundImg = backgroundImg;
    this.companyName = companyName;
    this.mFontColor = mFontColor;
  }
}

自定義啟動(dòng)頁組件代碼如下所示:

@Component
export struct SplashPage {

  @State mSplash: Splash = new Splash(3);

  // 跳轉(zhuǎn)方法
  skip: () => void;

  build() {
    // 底部企業(yè)名稱顯示堆疊組件
    Stack({ alignContent: Alignment.Bottom }) {
      // 圖片和倒計(jì)時(shí)跳轉(zhuǎn)頁面堆疊組件
      Stack({ alignContent: Alignment.TopEnd }) {
        if (this.mSplash.isLogo) {
          Image(this.mSplash.backgroundImg).objectFit(ImageFit.None)
        }
        Button(`跳過 | ${this.mSplash.timer} s`, { type: ButtonType.Normal })
          .height(42)
          .padding({ left: 16, right: 16 })
          .margin({ top: 16, right: 16 })
          .fontSize(16).fontColor(Color.White)
          .backgroundColor(Color.Gray)
          .borderRadius(8)
          .onClick(() => {
            this.skip();
          })
      }
      .backgroundImage(this.mSplash.isLogo ? null : this.mSplash.backgroundImg)
      .backgroundImageSize(this.mSplash.isLogo ? null : { width: '100%', height: '100%' })
      .width('100%').height('100%')
      if (this.mSplash.companyName) {
        Text(this.mSplash.companyName)
          .width('100%').height(54)
          .fontColor(this.mSplash.mFontColor)
          .fontSize(14).fontWeight(FontWeight.Bold)
          .textAlign(TextAlign.Center)
      }
    }
    .width('100%').height('100%')
  }

  aboutToAppear() {
    // 倒計(jì)時(shí)處理
    let skipWait = setInterval(() => {
      this.mSplash.timer--;
      if (this.mSplash.timer === 0) {
        clearInterval(skipWait);
        this.skip();
      }
    }, 1000)
  }
}

自定義組件定義完成后,還需要在模塊的index.ets中將組件導(dǎo)出,代碼如下所示:

export { Splash, SplashPage } from './src/main/ets/components/splashpage/SplashPage';

在entry模塊引入自定義模塊teui,打開entry目錄下的package.json并在dependencies依賴列中加入如下代碼:

"@tetcl/teui": "file:../teui"

注:其中"@tetcl/teui"中"tetcl/teui"需要和自定義模塊teui中package.json中name屬性一致。若提交到npm中心倉可直接使用"@tetcl/teui": "版本號(hào)"方式引入。引入完成后需要執(zhí)行編輯器上的Sync now或者npm install進(jìn)行下載同步。

在具體的頁面中導(dǎo)入自定義啟動(dòng)頁組件代碼如下所示:

import { Splash as SplashObj, SplashPage } from '@tetcl/teui'
import router from '@ohos.router';

注:為了和頁面名稱不沖突,對Splash作別名處理。

在頁面中引入自定義組件SplashPage并填寫相關(guān)屬性值及跳轉(zhuǎn)方法,代碼如下所示:

@Entry
@Component
struct Splash {

  // 跳轉(zhuǎn)到Index頁面
  onSkip() {
    router.replaceUrl({
      url: 'pages/Index'
    })
  }

  build() {
    Row() {
      SplashPage({ mSplash: new SplashObj(5, true, $r('app.media.icon'),
        'xxxx有限公司', 0x666666), skip: this.onSkip})
      // 常規(guī)圖
      // SplashPage({ mSplash: new SplashObj(5, false, $r('app.media.default_bg'), 
      //  'xxxx有限公司', 0xF5F5F5), skip: this.onSkip})
    }
    .height('100%')
  }
}

預(yù)覽效果如下圖所示:

自定義HarmonyOS啟動(dòng)頁組件-開源基礎(chǔ)軟件社區(qū)自定義HarmonyOS啟動(dòng)頁組件-開源基礎(chǔ)軟件社區(qū)

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

    關(guān)注

    30

    文章

    4671

    瀏覽量

    67767
  • HarmonyOS
    +關(guān)注

    關(guān)注

    79

    文章

    1946

    瀏覽量

    29738
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    HarmonyOS開發(fā)實(shí)例:【自定義Emitter】

    使用[Emitter]實(shí)現(xiàn)事件的訂閱和發(fā)布,使用[自定義彈窗]設(shè)置廣告信息。
    的頭像 發(fā)表于 04-14 11:37 ?881次閱讀
    <b class='flag-5'>HarmonyOS</b>開發(fā)實(shí)例:【<b class='flag-5'>自定義</b>Emitter】

    HarmonyOS開發(fā)案例:【 自定義彈窗】

    基于ArkTS的聲明式開發(fā)范式實(shí)現(xiàn)了三種不同的彈窗,第一種直接使用公共組件,后兩種使用CustomDialogController實(shí)現(xiàn)自定義彈窗
    的頭像 發(fā)表于 05-16 18:18 ?1060次閱讀
    <b class='flag-5'>HarmonyOS</b>開發(fā)案例:【 <b class='flag-5'>自定義</b>彈窗】

    講解一下HarmonyOS中的幾個(gè)自定義組件用到的知識(shí)

    HarmonyOS 的 Component 組件對外提供了一個(gè) DrawTask 接口,通過 addDrawTask 方法為組件添加一個(gè) DrawTask,讓開發(fā)者可以進(jìn)行自定義繪制邏
    發(fā)表于 03-16 16:05

    OpenHarmony自定義組件介紹

    觀察到了變化,將啟動(dòng)重新渲染。 2.根據(jù)框架持有的兩個(gè)map(自定義組件的創(chuàng)建和渲染流程中第4步),框架可以知道該狀態(tài)變量管理了哪些UI組件,以及這些UI
    發(fā)表于 09-25 15:36

    鴻蒙上自定義組件的過程

    ?? 在實(shí)際開發(fā)過程中,我們經(jīng)常會(huì)遇到一些系統(tǒng)原有組件無法滿足的情況,而 HarmonyOS 提供了自定義組件的方式,我們使用自定義
    的頭像 發(fā)表于 11-10 09:27 ?2722次閱讀
    鴻蒙上<b class='flag-5'>自定義</b><b class='flag-5'>組件</b>的過程

    HarmonyOS 中的幾個(gè)自定義控件介紹

    HarmonyOS 開發(fā)自定義組件目前還不是很豐富,在開發(fā)過程中常常會(huì)有一些特殊效果的組件,這就需要我們額外花一些時(shí)間實(shí)現(xiàn)。
    的頭像 發(fā)表于 01-04 13:49 ?2086次閱讀

    OpenHarmony自定義組件:ClearableInput和Keyboard

    組件介紹: 本示例包含了兩個(gè)OpenHarmony自定義組件,一個(gè)是ClearableInput,另一個(gè)是Keyboard。 ClearableInput 定義了一個(gè)帶清空圖標(biāo)的文本輸
    發(fā)表于 03-18 15:21 ?1次下載
    OpenHarmony<b class='flag-5'>自定義</b><b class='flag-5'>組件</b>:ClearableInput和Keyboard

    OpenHarmony自定義組件FlowImageLayout

    組件介紹 本示例是OpenHarmony自定義組件FlowImageLayout。 用于將一個(gè)圖片列表以瀑布流的形式顯示出來。 調(diào)用方法
    發(fā)表于 03-21 10:17 ?3次下載
    OpenHarmony<b class='flag-5'>自定義</b><b class='flag-5'>組件</b>FlowImageLayout

    OpenHarmony自定義組件ProgressWithText

    組件介紹 本示例是OpenHarmony自定義組件ProgressWithText。 在原來進(jìn)度條的上方加了一個(gè)文本框,動(dòng)態(tài)顯示當(dāng)前進(jìn)度并調(diào)整位置。 調(diào)用方法
    發(fā)表于 03-23 14:03 ?1次下載
    OpenHarmony<b class='flag-5'>自定義</b><b class='flag-5'>組件</b>ProgressWithText

    OpenHarmony自定義組件CircleProgress

    組件介紹 本示例是OpenHarmony自定義組件CircleProgress。 用于定義一個(gè)帶文字的圓形進(jìn)度條。 調(diào)用方法
    發(fā)表于 03-23 14:06 ?4次下載
    OpenHarmony<b class='flag-5'>自定義</b><b class='flag-5'>組件</b>CircleProgress

    適用于鴻蒙的自定義組件框架Carbon案例教程

    項(xiàng)目名稱:Carbon 所屬系列:ohos的第三方組件適配移植 功能:一個(gè)適用于鴻蒙的自定義組件框架,幫助快速實(shí)現(xiàn)各種需要的效果 項(xiàng)目移植狀態(tài):大部分移植 調(diào)用差異:基本沒有使用差異,可以參照
    發(fā)表于 04-07 09:49 ?5次下載

    自定義視圖組件教程案例

    自定義組件 1.自定義組件-particles(粒子效果) 2.自定義組件- pulse(脈沖b
    發(fā)表于 04-08 10:48 ?14次下載

    添加自定義屬性控制fridaserver啟動(dòng)和停止

    添加自定義屬性控制fridaserver啟動(dòng)和停止
    的頭像 發(fā)表于 08-09 10:08 ?1385次閱讀
    添加<b class='flag-5'>自定義</b>屬性控制fridaserver<b class='flag-5'>啟動(dòng)</b>和停止

    鴻蒙ArkUI實(shí)例:【自定義組件

    組件是 OpenHarmony 頁面最小顯示單元,一個(gè)頁面可由多個(gè)組件組合而成,也可只由一個(gè)組件組合而成,這些組件可以是ArkUI開發(fā)框架自帶系統(tǒng)
    的頭像 發(fā)表于 04-08 10:17 ?486次閱讀

    HarmonyOS開發(fā)案例:【UIAbility和自定義組件生命周期】

    本文檔主要描述了應(yīng)用運(yùn)行過程中UIAbility和自定義組件的生命周期。對于UIAbility,描述了Create、Foreground、Background、Destroy四種生命周期。對于頁面
    的頭像 發(fā)表于 05-10 15:31 ?902次閱讀
    <b class='flag-5'>HarmonyOS</b>開發(fā)案例:【UIAbility和<b class='flag-5'>自定義</b><b class='flag-5'>組件</b>生命周期】