HOME
Shop
  • English
  • 简体中文
HOME
Shop
  • English
  • 简体中文
  • Product Series

    • FPGA+ARM

      • GM-3568JHF

        • 1. Introduction

          • About GM-3568JHF
        • 2. Quick Start

          • 00 Introduction
          • 01 Environment Setup
          • 02 Compilation Instructions
          • 03 Flashing Guide
          • 04 Debug Tools
          • 05 Software Update
          • 06 View Information
          • 07 Test Commands
          • 08 App Compilation
          • 09 Source Code Acquisition
        • 3. Peripherals and Interfaces

          • 01 USB
          • 02 Display and Touch
          • 03 Ethernet
          • 04 WIFI
          • 05 Bluetooth
          • 06 TF-Card
          • 07 Audio
          • 08 Serial Port
          • 09 CAN
          • 10 RTC
        • 4. Application Development

          • 01 UART read and write case
          • 02 Key detection case
          • 03 LED light flashing case
          • 04 MIPI screen detection case
          • 05 Read USB device information example
          • 06 FAN Detection Case
          • 07 FPGA FSPI Communication Case
          • 08 FPGA DMA read and write case
          • 09 GPS debugging case
          • 10 Ethernet Test Cases
          • 11 RS485 reading and writing examples
          • 12 FPGA IIC read and write examples
          • 13 PN532 NFC card reader case
          • 14 TF card reading and writing case
        • 5. QT Development

          • 01 ARM64 cross compiler environment construction
          • 02 QT program added automatic startup service
        • 6. RKNN_NPU Development

          • 01 RK3568 NPU Overview
          • 02 Development Environment Setup
          • Run Official YOLOv5 Example
          • Model Conversion Detailed Explanation
          • Run Custom Model on Board
        • 7. FPGA Development

          • ARM and FPGA Communication
          • /fpga-arm/GM-3568JHF/FPGA/ch02-FPGA-Development-Manual.html
        • 8. Others

          • 01 Modification of the root directory file system
          • 02 System auto-start service
        • 9. Download

          • Download Resources
    • ShimetaPi

      • M4-R1

        • 1. Introduction

          • 1.1 About M4-R1
        • 2. Quick Start

          • 2.1 OpenHarmony Overview
          • 2.2 Image Burning
          • 2.3 Development Environment Preparation
          • 2.4 Hello World Application
        • 3. Application Development

          • 3.1 Getting Started

            • 3.1.1 ArkTS Language Overview
            • 3.1.2 UI Components (Part 1)
            • 3.1.3 UI Components (Part 2)
            • 3.1.4 UI Components (Part 3)
          • 3.2 Advanced

            • 3.2.1 Getting Started Guide
            • 3.2.2 Usage of Third Party Libraries
            • 3.2.3 Deployment of the Application
            • 3.2.4 Factory Reset
            • 3.2.5 System Debug
            • 3.2.6 APP Stability Testing
            • 3.2.7 Application Testing
          • 3.3 Getting Docs

            • 3.3.1 Official Website Information
          • 3.4 Development Instructions

            • 3.4.1 Full SDK
            • 3.4.2 Introduction of Third Party Libraries
            • 3.4.3 Introduction of HDC Tool
            • 3.4.4 Restore Factory Mode
            • 3.4.5 Update System API
          • 3.5 First Application

            • 3.5.1 First ArkTS App
          • 3.6 Application Demo

            • 3.6.1 UART Tool
            • 3.6.2 Graphics Tablet
            • 3.6.3 Digital Clock
            • 3.6.4 WIFI Tool
        • 4. Device Development

          • 4.1 Ubuntu Environment Development

            • 4.1.1 Environment Setup
            • 4.1.2 Download Source Code
            • 4.1.3 Compile Source Code
          • 4.2 Using DevEco Device Tool

            • 4.2.1 Tool Introduction
            • 4.2.2 Environment Construction
            • 4.2.3 Import SDK
            • 4.2.4 Function Introduction
        • 5. Peripherals and Interfaces

          • 5.1 Raspberry Pi Interfaces
          • 5.2 GPIO Interface
          • 5.3 I2C Interface
          • 5.4 SPI Communication
          • 5.5 PWM Control
          • 5.6 Serial Port Communication
          • 5.7 TF Card Slot
          • 5.8 Display Screen
          • 5.9 Touch Screen
          • 5.10 Audio
          • 5.11 RTC
          • 5.12 Ethernet
          • 5.13 M.2
          • 5.14 MINI PCIE
          • 5.15 Camera
          • 5.16 WIFI BT
          • 5.17 HAT
        • 6. FAQ

          • 6.1 Download Link
      • M5-R1

        • 1. Introduction

          • M5-R1 Development Documentation
        • 2. Quick Start

          • OpenHarmony Overview
          • Image Burning
          • Development Environment Preparation
          • Hello World Application and Deployment
        • 3. Peripherals and Interfaces

          • 3.1 Raspberry Pi Interfaces
          • 3.2 GPIO Interface
          • 3.3 I2C Interface
          • 3.4 SPI Communication
          • 3.5 PWM Control
          • 3.6 Serial Port Communication
          • 3.7 TF Card Slot
          • 3.8 Display Screen
          • 3.9 Touch Screen
          • 3.10 Audio
          • 3.11 RTC
          • 3.12 Ethernet
          • 3.13 M.2
          • 3.14 MINI PCIE
          • 3.15 Camera
          • 3.16 WIFI BT
          • 3.17 HAT
        • 4. Application Development

          • 4.1 Getting Started

            • 4.1.1 ArkTS Language Overview
            • 4.1.2 UI Components (Part 1)
            • 4.1.3 UI Components (Part 2)
            • 4.1.4 UI Components (Part 3)
          • 4.2 Advanced

            • 4.2.1 Getting Started Guide
            • 4.2.2 Usage of Third Party Libraries
            • 4.2.3 Deployment of the Application
            • 4.2.4 Factory Reset
            • 4.2.5 System Debug
            • 4.2.6 APP Stability Testing
            • 4.2.7 Application Testing
        • 5. Device Development

          • 5.1 Environment Setup
          • 5.2 Download Source Code
          • 5.3 Compile Source Code
        • 6. Download

          • Data Download
    • OpenHarmony

      • SC-3568HA

        • 1. Introduction

          • 1.1 About SC-3568HA
        • 2. Quick Start

          • 2.1 OpenHarmony Overview
          • 2.2 Image Burning
          • 2.3 Development Environment Preparation
          • 2.4 Hello World Application
        • 3. Application Development

          • 3.1 ArkUI

            • 3.1.1 ArkTS Language Overview
            • 3.1.2 UI Components (Part 1)
            • 3.1.3 UI Components (Part 2)
            • 3.1.4 UI Components (Part 3)
          • 3.2 Advanced

            • 3.2.1 Getting Started Guide
            • 3.2.2 Usage of Third Party Libraries
            • 3.2.3 Deployment of the Application
            • 3.2.4 Factory Reset
            • 3.2.5 System Debug
            • 3.2.6 APP Stability Testing
            • 3.2.7 Application Testing
        • 4. Device Development

          • 4.1 Environment Setup
          • 4.2 Download Source Code
          • 4.3 Compile Source Code
        • 5. Peripherals and Interfaces

          • 5.1 Raspberry Pi Interfaces
          • 5.2 GPIO Interface
          • 5.3 I2C Interface
          • 5.4 SPI Communication
          • 5.5 PWM Control
          • 5.6 Serial Port Communication
          • 5.7 TF Card Slot
          • 5.8 Display Screen
          • 5.9 Touch Screen
          • 5.10 Audio
          • 5.11 RTC
          • 5.12 Ethernet
          • 5.13 M.2
          • 5.14 MINI PCIE
          • 5.15 Camera
          • 5.16 WIFI BT
          • 5.17 HAT
        • 6. FAQ

          • 6.1 Download Link
      • M-K1HSE

        • 1. Introduction

          • 1.1 Product Introduction
        • 2. Quick Start

          • 2.1 Debug Tool Installation
          • 2.2 Development Environment Setup
          • 2.3 Source Code Download
          • 2.4 Build Instructions
          • 2.5 Flashing Guide
          • 2.6 APT Update Sources
          • 2.7 View Board Info
          • 2.8 CLI LED and Key Test
          • 2.9 GCC Build Programs
        • 3. Application Development

          • 3.1 Basic Application Development

            • 3.1.1 Development Environment Preparation
            • 3.1.2 First Application HelloWorld
            • 3.1.3 Develop HAR Package
          • 3.2 Peripheral Application Cases

            • 3.2.1 UART Read/Write
            • 3.2.2 Key Demo
            • 3.2.3 LED Flash
        • 4. Peripherals and Interfaces

          • 4.1 Standard Peripherals

            • 4.1.1 USB
            • 4.1.2 Display and Touch
            • 4.1.3 Ethernet
            • 4.1.4 WIFI
            • 4.1.5 Bluetooth
            • 4.1.6 TF Card
            • 4.1.7 Audio
            • 4.1.8 Serial Port
            • 4.1.9 CAN
            • 4.1.10 RTC
          • 4.2 Interfaces

            • 4.2.1 Audio
            • 4.2.2 RS485
            • 4.2.3 Display
            • 4.2.4 Touch
        • 5. System Customization Development

          • 5.1 System Porting
          • 5.2 System Customization
          • 5.3 Driver Development
          • 5.4 System Debugging
          • 5.5 OTA Upgrade
        • 6. Download

          • 6.1 Download
    • EVS-Camera

      • CF-NRS1

        • 1. Introduction

          • 1.1 About CF-NRS1
          • 1.2 Event-Based Concepts
          • 1.3 Quick Start
          • 1.4 Resources
        • 2. Development

          • 2.1 Development Overview

            • 2.1.1 Shimetapi Hybrid Camera SDK Introduction
          • 2.2 Environment & API

            • 2.2.1 Environment Overview
            • 2.2.2 Development API Overview
          • 2.3 Linux Development

            • 2.3.1 Linux SDK Introduction
            • 2.3.2 Linux SDK API
            • 2.3.3 Linux Algorithm
            • 2.3.4 Linux Algorithm API
          • 2.4 Service & Web

            • 2.4.1 EVS Server
            • 2.4.2 Time Server
            • 2.4.3 EVS Web
        • 3. Download

          • 3.1 Download
        • 4. Common Problems

          • 4.1 Common Problems
      • CF-CRA2

        • 1. Introduction

          • 1.1 About CF-CRA2
        • 2. Download

          • 2.1 Download
      • EVS Module

        • 1. Related Concepts
        • 2. Hardware Preparation and Environment Configuration
        • 3. Example Program User Guide
        • Resources Download
    • AI-model

      • 1684XB-32T

        • 1. Introduction

          • AIBOX-1684XB-32 Introduction
        • 2. Quick Start

          • First time use
          • Network Configuration
          • Disk usage
          • Memory allocation
          • Fan Strategy
          • Firmware Upgrade
          • Cross-Compilation
          • Model Quantization
        • 3. Application Development

          • 3.1 Development Introduction

            • Sophgo SDK Development
            • SOPHON-DEMO Introduction
          • 3.2 Large Language Models

            • Deploying Llama3 Example
            • /ai-model/AIBOX-1684XB-32/application-development/LLM/Sophon_LLM_api_server-Development-AIBOX-1684XB-32.html
            • /ai-model/AIBOX-1684XB-32/application-development/LLM/MiniCPM-V-2_6-AIBOX-1684XB-32.html
            • /ai-model/AIBOX-1684XB-32/application-development/LLM/Qwen-2-5-VL-demo-Development-AIBOX-1684XB-32.html
            • /ai-model/AIBOX-1684XB-32/application-development/LLM/Qwen-3-chat-demo-Development-AIBOX-1684XB-32.html
            • /ai-model/AIBOX-1684XB-32/application-development/LLM/Qwen3-Qwen Agent-MCP.html
            • /ai-model/AIBOX-1684XB-32/application-development/LLM/Qwen3-langchain-AI Agent.html
          • 3.3 Deep Learning

            • ResNet (Image Classification)
            • LPRNet (License Plate Recognition)
            • SAM (Universal Image Segmentation Foundation Model)
            • YOLOv5 (Object Detection)
            • OpenPose (Human Keypoint Detection)
            • PP-OCR (Optical Character Recognition)
        • 4. Download

          • Resource Download
      • 1684X-416T

        • 1. Introduction

          • AIBOX-1684X-416 Introduction
        • 2. Demo Simple Operation Guide

          • Simple instructions for using shimeta smart monitoring demo
      • RDK-X5

        • 1. Introduction

          • RDK-X5 Hardware Introduction
        • 2. Quick Start

          • RDK-X5 Quick Start
        • 3. Application Development

          • 3.1 AI Online Model Development

            • AI Online Development - Experiment01
            • AI Online Development - Experiment02
            • AI Online Development - Experiment03
            • AI Online Development - Experiment04
            • AI Online Development - Experiment05
            • AI Online Development - Experiment06
          • 3.2 Large Language Models (Voice)

            • Voice LLM Application - Experiment01
            • Voice LLM Application - Experiment02
            • Voice LLM Application - Experiment03
            • Voice LLM Application - Experiment04
            • Voice LLM Application - Experiment05
            • Voice LLM Application - Experiment06
          • 3.3 40pin-IO Development

            • 40pin IO Development - Experiment01
            • 40pin IO Development - Experiment02
            • 40pin IO Development - Experiment03
            • 40pin IO Development - Experiment04
            • 40pin IO Development - Experiment05
            • 40pin IO Development - Experiment06
            • 40pin IO Development - Experiment07
          • 3.4 USB Module Development

            • USB Module Usage - Experiment01
            • USB Module Usage - Experiment02
          • 3.5 Machine Vision

            • Machine Vision Technology Development - Experiment01
            • Machine Vision Technology Development - Experiment02
            • Machine Vision Technology Development - Experiment03
            • Machine Vision Technology Development - Experiment04
          • 3.6 ROS2 Base Development

            • ROS2 Basic Development - Experiment01
            • ROS2 Basic Development - Experiment02
            • ROS2 Basic Development - Experiment03
            • ROS2 Basic Development - Experiment04
      • RDK-S100

        • 1. Introduction

          • 1.1 About RDK-S100
        • 2. Quick Start

          • 2.1 First Use
        • 3. Application Development

          • 3.1 AI Online Model Development

            • 3.1.1 Volcano Engine Doubao AI
            • 3.1.2 Image Analysis
            • 3.1.3 Multimodal Visual Analysis
            • 3.1.4 Multimodal Image Comparison
            • 3.1.5 Multimodal Document Analysis
            • 3.1.6 Camera AI Vision Analysis
          • 3.2 Large Language Models

            • 3.2.1 Speech Recognition
            • 3.2.2 Voice Conversation
            • 3.2.3 Multimodal Image Analysis
            • 3.2.4 Multimodal Image Comparison
            • 3.2.5 Multimodal Document Analysis
            • 3.2.6 Multimodal Vision Application
          • 3.3 40pin-IO Development

            • 3.3.1 GPIO Output LED Blink
            • 3.3.2 GPIO Input
            • 3.3.3 Key Control LED
            • 3.3.4 PWM Output
            • 3.3.5 Serial Output
            • 3.3.6 I2C Experiment
          • 3.4 USB Module Development

            • 3.4.1 USB Voice Module
            • 3.4.2 Sound Source Localization
          • 3.5 Machine Vision

            • 3.5.1 USB Camera
            • 3.5.2 Image Processing Basics
            • 3.5.3 Object Detection
            • 3.5.4 Image Segmentation
          • 3.6 ROS2 Base Development

            • 3.6.1 Environment Setup
            • 3.6.2 Create and Build Workspace
            • 3.6.3 ROS2 Topic Communication
            • 3.6.4 ROS2 Camera Application
    • Core-Board

      • C-3568BQ

        • 1. Introduction

          • C-3568BQ Introduction
      • C-3588LQ

        • 1. Introduction

          • C-3588LQ Introduction
      • GC-3568JBAF

        • 1. Introduction

          • GC-3568JBAF Introduction
      • C-K1BA

        • 1. Introduction

          • C-K1BA Introduction

Chapter 3 UI Component Introduction and Practical Applications (Part 2)

This article will continue to explain the common components and animation functions in the ArkUI framework, including text components, toggle components, slider components, and animation components. Through clear concept explanations and practical examples, this guide helps beginners quickly master the usage of these features and apply them flexibly in actual development.

1. Text Component

The Text component is a basic component used to display text content, supporting rich style and layout configurations, and can also contain sub-components such as Span and ImageSpan.

1.1 Text Component Definition and Properties

Interface:

	Text(content?: string | Resource, options?: TextOptions)

Property Description:

  • content: The text content to display.
  • Style Settings: You can use the .style() method to specify alignment, font size, border, padding, and other styles for the text.

1.2 Usage Example

content: The text content to display. A simple example is as follows:

	// xxx.ets
    @Extend(Text)
    function style(TextAlign: TextAlign) {
    .textAlign(TextAlign)
    .fontSize(12)
    .border({ width: 1 })
    .padding(10)
    .width('100%')
    }

    @Entry
    @Component
    struct TextExample1 {
    build() {
        Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Start, justifyContent: FlexAlign.SpaceBetween }) {
        // Text horizontal alignment setting
        // Single-line text
        Text('textAlign').fontSize(9).fontColor(0xCCCCCC)
        Text('TextAlign set to Center.')
            .style(TextAlign.Center)
        Text('TextAlign set to Start.')
            .style(TextAlign.Start)
        Text('TextAlign set to End.')
            .style(TextAlign.End)

        // Multi-line text
        Text('This is the text content with textAlign set to Center.')
            .style(TextAlign.Center)
        Text('This is the text content with textAlign set to Start.')
            .style(TextAlign.Start)
        Text('This is the text content with textAlign set to End.')
            .style(TextAlign.End)


        // Text overflow display method
        Text('TextOverflow+maxLines').fontSize(9).fontColor(0xCCCCCC)
        // Display truncated content when exceeding maxLines
        Text('This is the setting of textOverflow to Clip text content This is the setting of textOverflow to None text content. This is the setting of textOverflow to Clip text content This is the setting of textOverflow to None text content.')
            .textOverflow({ overflow: TextOverflow.Clip })
            .maxLines(1)
            .style(TextAlign.Start)

        // Display ellipsis when exceeding maxLines
        Text('This is set textOverflow to Ellipsis text content This is set textOverflow to Ellipsis text content.')
            .textOverflow({ overflow: TextOverflow.Ellipsis })
            .maxLines(1)
            .style(TextAlign.Start)

        Text('lineHeight').fontSize(9).fontColor(0xCCCCCC)
        Text('This is the text with the line height set. This is the text with the line height set.')
            .style(TextAlign.Start)
        Text('This is the text with the line height set. This is the text with the line height set.')
            .style(TextAlign.Start)
            .lineHeight(20)
            }.height(600).width(340).padding({ left: 35, right: 35, top: 35 })
        }
    }

2. Toggle Component

The component provides checkbox style, toggle button style, and switch style. Sub-components can only be included when ToggleType is Button.

2.1 Definition and Parameters

	Toggle(options: { type: ToggleType, isOn?: boolean })

Parameter Description:

  • type: The toggle type, such as Switch, Checkbox, or Button.
  • isOn: The current state (true or false).

2.2 Usage Example

A simple example is as follows:

	// xxx.ets
    @Entry
    @Component
    struct ToggleExample {
    build() {
        Column({ space: 10 }) {
        Text('type: Switch').fontSize(12).fontColor(0xcccccc).width('90%')
        Flex({ justifyContent: FlexAlign.SpaceEvenly, alignItems: ItemAlign.Center }) {
            Toggle({ type: ToggleType.Switch, isOn: false })
            .selectedColor('#007DFF')
            .switchPointColor('#FFFFFF')
            .onChange((isOn: boolean) => {
                console.info('Component status:' + isOn)
            })

            Toggle({ type: ToggleType.Switch, isOn: true })
            .selectedColor('#007DFF')
            .switchPointColor('#FFFFFF')
            .onChange((isOn: boolean) => {
                console.info('Component status:' + isOn)
            })
        }

        Text('type: Checkbox').fontSize(12).fontColor(0xcccccc).width('90%')
        Flex({ justifyContent: FlexAlign.SpaceEvenly, alignItems: ItemAlign.Center }) {
            Toggle({ type: ToggleType.Checkbox, isOn: false })
            .size({ width: 20, height: 20 })
            .selectedColor('#007DFF')
            .onChange((isOn: boolean) => {
                console.info('Component status:' + isOn)
            })

            Toggle({ type: ToggleType.Checkbox, isOn: true })
            .size({ width: 20, height: 20 })
            .selectedColor('#007DFF')
            .onChange((isOn: boolean) => {
                console.info('Component status:' + isOn)
            })
        }

        Text('type: Button').fontSize(12).fontColor(0xcccccc).width('90%')
        Flex({ justifyContent: FlexAlign.SpaceEvenly, alignItems: ItemAlign.Center }) {
            Toggle({ type: ToggleType.Button, isOn: false }) {
            Text('status button').fontColor('#182431').fontSize(12)
            }.width(106)
            .selectedColor('rgba(0,125,255,0.20)')
            .onChange((isOn: boolean) => {
            console.info('Component status:' + isOn)
            })

            Toggle({ type: ToggleType.Button, isOn: true }) {
            Text('status button').fontColor('#182431').fontSize(12)
            }.width(106)
            .selectedColor('rgba(0,125,255,0.20)')
            .onChange((isOn: boolean) => {
            console.info('Component status:' + isOn)
            })
          }
        }.width('100%').padding(24)
     }
    }

3. Slider Component

The Slider component is commonly used for quickly adjusting settings, such as volume control, brightness adjustment, and other application scenarios.

3.1 Definition and Parameters

Interface:

    Slider(options?: SliderOptions)

Parameter Description:

  • value: The current slider value (supports two-way binding).
  • min / max: The minimum and maximum values of the slider.
  • step: The slider step.
  • style: Supports OutSet (external style) and InSet (internal style).

3.2 Usage Example

    // xxx.ets
    @Entry
    @Component
    struct SliderExample {
    @State outSetValueOne: number = 40
    @State inSetValueOne: number = 40
    @State noneValueOne: number = 40
    @State outSetValueTwo: number = 40
    @State inSetValueTwo: number = 40
    @State vOutSetValueOne: number = 40
    @State vInSetValueOne: number = 40
    @State vOutSetValueTwo: number = 40
    @State vInSetValueTwo: number = 40

    build() {
        Column({ space: 8 }) {
        Text('outset slider').fontSize(9).fontColor(0xCCCCCC).width('90%').margin(15)
        Row() {
            Slider({
            value: this.outSetValueOne,
            min: 0,
            max: 100,
            style: SliderStyle.OutSet
            })
            .showTips(true)
            .onChange((value: number, mode: SliderChangeMode) => {
                this.outSetValueOne = value
                console.info('value:' + value + 'mode:' + mode.toString())
            })
            // toFixed(0) processes the slider return value to integer precision
            Text(this.outSetValueOne.toFixed(0)).fontSize(12)
        }
        .width('80%')
        Row() {
            Slider({
            value: this.outSetValueTwo,
            step: 10,
            style: SliderStyle.OutSet
            })
            .showSteps(true)
            .onChange((value: number, mode: SliderChangeMode) => {
				this.outSetValueTwo = value
				console.info('value:' + value + 'mode:' + mode.toString())
            })
            Text(this.outSetValueTwo.toFixed(0)).fontSize(12)
        }
        .width('80%')

        Text('inset slider').fontSize(9).fontColor(0xCCCCCC).width('90%').margin(15)
        Row() {
            Slider({
            value: this.inSetValueOne,
            min: 0,
            max: 100,
            style: SliderStyle.InSet
            })
            .blockColor('#191970')
            .trackColor('#ADD8E6')
            .selectedColor('#4169E1')
            .showTips(true)
            .onChange((value: number, mode: SliderChangeMode) => {
                this.inSetValueOne = value
                console.info('value:' + value + 'mode:' + mode.toString())
            })
            Text(this.inSetValueOne.toFixed(0)).fontSize(12)
        }
        .width('80%')
        Row() {
            Slider({
            value: this.inSetValueTwo,
            step: 10,
            style: SliderStyle.InSet
            })
            .blockColor('#191970')
            .trackColor('#ADD8E6')
            .selectedColor('#4169E1')
            .showSteps(true)
            .onChange((value: number, mode: SliderChangeMode) => {
                this.inSetValueTwo = value
                console.info('value:' + value + 'mode:' + mode.toString())
            })
            Text(this.inSetValueTwo.toFixed(0)).fontSize(12)
        }
        .width('80%')

        Text('none slider').fontSize(9).fontColor(0xCCCCCC).width('90%').margin(15)
        Row() {
            Slider({
            value: this.noneValueOne,
            min: 0,
            max: 100,
            style: SliderStyle.NONE
            })
            .blockColor('#191970')
            .trackColor('#ADD8E6')
            .selectedColor('#4169E1')
            .showTips(true)
            .onChange((value: number, mode: SliderChangeMode) => {
                this.noneValueOne = value
                console.info('value:' + value + 'mode:' + mode.toString())
            })
            Text(this.noneValueOne.toFixed(0)).fontSize(12)
        }
        .width('80%')

        Row() {
			Column() {
			Text('vertical outset slider').fontSize(9).fontColor(0xCCCCCC).width('50%').margin(15)
			Row() {
				Text().width('10%')
                Slider({
                value: this.vOutSetValueOne,
                style: SliderStyle.OutSet,
                direction: Axis.Vertical
                })
                .blockColor('#191970')
                .trackColor('#ADD8E6')
                .selectedColor('#4169E1')
                .showTips(true)
                .onChange((value: number, mode: SliderChangeMode) => {
                    this.vOutSetValueOne = value
                    console.info('value:' + value + 'mode:' + mode.toString())
                })
                Slider({
                value: this.vOutSetValueTwo,
                step: 10,
                style: SliderStyle.OutSet,
                direction: Axis.Vertical
                })
                .blockColor('#191970')
                .trackColor('#ADD8E6')
                .selectedColor('#4169E1')
                .showSteps(true)
                .onChange((value: number, mode: SliderChangeMode) => {
                    this.vOutSetValueTwo = value
                    console.info('value:' + value + 'mode:' + mode.toString())
                })
            }
            }.width('50%').height(300)

            Column() {
            Text('vertical inset slider').fontSize(9).fontColor(0xCCCCCC).width('50%').margin(15)
            Row() {
                Slider({
                value: this.vInSetValueOne,
                style: SliderStyle.InSet,
                direction: Axis.Vertical,
                reverse: true // Vertical Slider defaults to min at top and max at bottom, so to slide from bottom to top, set reverse to true
                })
                .showTips(true)
                .onChange((value: number, mode: SliderChangeMode) => {
					this.vInSetValueOne = value
                    console.info('value:' + value + 'mode:' + mode.toString())
                })
				Slider({
                value: this.vInSetValueTwo,
                step: 10,
                style: SliderStyle.InSet,
                direction: Axis.Vertical,
                reverse: true
                })
                .showSteps(true)
                .onChange((value: number, mode: SliderChangeMode) => {
                    this.vInSetValueTwo = value
                    console.info('value:' + value + 'mode:' + mode.toString())
                })
            }
            }.width('50%').height(300)
        }
         }.width('100%')
    }
    }

4. Animation Component

In modern UI interface design, animation plays a crucial role. It not only improves the intuitiveness of the interface but also significantly enhances the appearance of the application and user experience. The ArkUI development framework understands the importance of animation and provides developers with rich animation capabilities, such as property animations, transition animations, and custom animations. Next, this article will provide a detailed introduction to these animation types and demonstrate how to use them in ArkUI through practical examples.

4.1 Animation Introduction

4.1.1 Property Animation

Property animation allows developers to dynamically change the properties of UI elements (such as position, size, color, etc.), thereby creating rich animation effects. In ArkUI, property animation can be customized by setting animation properties, duration, delay time, and other parameters.

4.1.2 Transition Animation

Transition animation is mainly used for effects when switching between pages. It can make the interface transition more smoothly and improve user experience. ArkUI provides various transition animation effects, such as fade-in/out, sliding, etc., and developers can choose the appropriate animation effect based on actual needs.

4.1.3 Custom Animation

In addition to property animation and transition animation, ArkUI also supports custom animation. Developers can define their own animation effects by writing code to achieve more complex and personalized animation requirements.

4.2 Practical Demonstration

Next, we will demonstrate how to use these animation capabilities in ArkUI through practical examples.

4.2.1 Property Animation Practice

Suppose we have a button element and want to change its color when the user clicks the button. We can use property animation to achieve this effect. First, we need to create a button element and add a click event listener to it. Then, when the click event is triggered, we use property animation to change the button's color.

    // Create button element
    Button button = new Button();
    button.setText("Click Me");

    // Add click event listener
    button.setOnClickedListener(() -> {
        // Use property animation to change button color
        Animation animation = new Animation();
        animation.setProperty("backgroundColor", Color.RED, Color.BLUE);
        animation.setDuration(1000); // Set animation duration
        animation.start(button); // Start animation
    });

4.2.2 Transition Animation Practice

Suppose we have two pages and want to switch to another page when the user clicks a button, adding a fade-in/fade-out transition animation effect. First, we need to create two page elements and add buttons and click event listeners to them. Then, when the click event is triggered, we use transition animation to achieve page switching.

    // Create two page elements
    Page page1 = new Page();
    Page page2 = new Page();

    // Add button and click event listener to page1
    Button button = new Button();
    button.setText("Switch to Page 2");
    page1.add(button);

    button.setOnClickedListener(() -> {
    // Use transition animation to switch to page2
    Transition transition = new Transition();
		transition.setType(TransitionType.FADE_IN_FADE_OUT); // Set fade-in/fade-out effect
        transition.start(page1, page2); // Start transition animation
    });

4.2.3 Custom Animation Practice

Suppose we want to create a custom animation effect, such as moving an element along a specific path. First, we need to define an animation path. Then, we use custom animation to achieve the effect of the element moving along that path.

    // Create animation path
    Path path = new Path();
    path.moveTo(0, 0);
    path.lineTo(100, 100);

    // Create custom animation
    CustomAnimation customAnimation = new CustomAnimation(path);
    customAnimation.setDuration(2000); // Set animation duration

    // Get the element to move and apply animation
    Element element = ...; // Assume we already have an element
    customAnimation.start(element); // Start custom animation

It should be noted that the above code examples are only for demonstrating how to use animation capabilities in ArkUI and are not complete runnable code. In actual development, developers need to create UI elements and set animation parameters according to their needs. In summary, ArkUI provides developers with rich animation capabilities, making it simpler and more intuitive to create various animation effects in UI interfaces. By reasonably using these animation capabilities, developers can significantly improve the appearance of their applications and user experience.


Edit this page on GitHub
Last Updated:
Contributors: ZSL, zwhuang
Prev
3.1.2 UI Components (Part 1)
Next
3.1.4 UI Components (Part 3)