在这里插入图片描述

前言

青花瓷以其独特的蓝白配色闻名于世,这种配色方案源于钴蓝颜料在高温下与白色瓷胎的完美融合。在本篇文章中,我们将基于青花瓷的传统美学,为App设计一套完整的色彩系统,让用户在使用应用时能够感受到浓郁的传统文化氛围。

色彩在用户界面设计中扮演着至关重要的角色,它不仅影响视觉美感,还能传达情感和文化内涵。青花瓷的蓝色象征着宁静、深邃和高雅,白色则代表纯洁和简约。我们将这些传统元素融入现代UI设计中。

定义主题颜色常量

首先,我们需要在Flutter中定义一套符合青花瓷美学的颜色常量。这些颜色将贯穿整个应用的视觉设计。

// lib/theme/colors.dart
import 'package:flutter/material.dart';

class PorcelainColors {
  // 青花蓝 - 主色调
  static const Color primaryBlue = Color(0xFF1E4B8E);
  // 釉白色 - 背景色
  static const Color glazeWhite = Color(0xFFF8F6F0);
  // 深青蓝 - 强调色
  static const Color deepCobalt = Color(0xFF0D2E5C);
  // 浅青蓝 - 辅助色
  static const Color lightAzure = Color(0xFF5B8AC7);
}

这段代码定义了青花瓷App的核心色彩体系。primaryBlue是从传统青花瓷中提取的标准蓝色,作为应用的主色调使用。glazeWhite模拟了瓷器釉面的温润白色,带有微微的暖色调,用作背景色能够减少视觉疲劳。deepCobalt是更深的钴蓝色,用于需要强调的元素。lightAzure则是较浅的蓝色,用于次要信息的展示。

OpenHarmony资源颜色定义

在OpenHarmony平台上,我们同样需要定义对应的颜色资源,以确保原生组件也能使用统一的色彩系统。

// ohos/entry/src/main/resources/base/element/color.json
{
  "color": [
    {
      "name": "porcelain_blue",
      "value": "#1E4B8E"
    },
    {
      "name": "glaze_white", 
      "value": "#F8F6F0"
    },
    {
      "name": "deep_cobalt",
      "value": "#0D2E5C"
    }
  ]
}

OpenHarmony使用JSON格式定义颜色资源,这些资源可以在ArkTS代码中通过$r('app.color.porcelain_blue')的方式引用。统一的颜色定义确保了Flutter层和原生层在视觉上的一致性,这对于混合开发的应用尤为重要。

创建主题数据类

为了更好地管理主题,我们创建一个专门的主题数据类,封装所有与主题相关的配置。

// lib/theme/app_theme.dart
import 'package:flutter/material.dart';
import 'colors.dart';

class AppTheme {
  static ThemeData get lightTheme {
    return ThemeData(
      useMaterial3: true,
      colorScheme: ColorScheme.light(
        primary: PorcelainColors.primaryBlue,
        surface: PorcelainColors.glazeWhite,
        onPrimary: Colors.white,
      ),
      scaffoldBackgroundColor: PorcelainColors.glazeWhite,
    );
  }
}

这个主题类采用Material 3设计规范,通过ColorScheme统一管理应用的色彩方案。primary设置为青花蓝作为主要交互元素的颜色,surface使用釉白色作为表面颜色,onPrimary设为白色确保在蓝色背景上的文字清晰可读。scaffoldBackgroundColor设置了页面的默认背景色。

渐变色效果实现

青花瓷的蓝色并非单一色调,而是有着丰富的层次变化。我们通过渐变色来模拟这种效果。

// lib/theme/gradients.dart
import 'package:flutter/material.dart';
import 'colors.dart';

class PorcelainGradients {
  static const LinearGradient blueGradient = LinearGradient(
    begin: Alignment.topCenter,
    end: Alignment.bottomCenter,
    colors: [
      PorcelainColors.lightAzure,
      PorcelainColors.primaryBlue,
      PorcelainColors.deepCobalt,
    ],
  );
}

渐变色从浅蓝过渡到深蓝,模拟了青花瓷上颜料浓淡变化的效果。这种渐变可以用于页面头部、按钮背景等需要视觉层次感的地方。LinearGradientbeginend参数定义了渐变的方向,从上到下的渐变符合自然光照的视觉习惯。

OpenHarmony主题样式配置

在OpenHarmony端,我们也需要配置相应的主题样式,以保持跨平台的视觉一致性。

// ohos/entry/src/main/ets/common/theme.ets
export class ThemeConfig {
  static readonly primaryColor: string = '#1E4B8E';
  static readonly backgroundColor: string = '#F8F6F0';
  static readonly textPrimaryColor: string = '#0D2E5C';
  static readonly borderRadius: number = 12;
}

这个TypeScript类定义了OpenHarmony端的主题配置。使用readonly修饰符确保这些值不会被意外修改。borderRadius定义了统一的圆角大小,青花瓷器物多为圆润的造型,因此我们选择了较大的圆角值来呼应这一特点。这些配置将在后续的原生组件开发中被广泛使用。

总结

本篇文章详细介绍了青花瓷App的色彩系统设计,从Flutter的颜色常量定义到OpenHarmony的资源配置,建立了一套完整的主题体系。这套色彩系统不仅美观,还承载了青花瓷的文化内涵。下一篇文章将介绍启动页的设计与实现,展示如何运用这些色彩创造令人印象深刻的第一印象。欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐