FireMonkey 做 APP 的界面设计方法研究

Delphi D10.X 移动开发中APP界面基本布局(二) 主要讲FMX开发APP界面下可视控件的布局基础知识,也是一些基本的概念,也只有当你了解这些基础知识后,才能更好的应用界面布局。 阅读详情
AI摘要

本文详细解析了Delphi社区版10.3中ProfileForm的设计思路与实现技巧,包括使用FireMonkey的Align Content特性、TRectangle替代TImage显示图片、半透明效果的实现以及整体界面风格的设定。

下载安装了 Delphi 社区版 10.3 ,从它的 GetIt 下载了一个 Demo 程序。程序的名字叫做 ProfileForm。界面非常漂亮,有点惊艳的感觉。赶紧仔细研究一下它是怎么做出来的。先看图:

首先,这个 APP 是在一个 Frame 里面去做界面设计和控件的摆放。然后在主 Form 里面,放入这个 Frame。在主 Form 里放一个 TStyleBook 名为 JetStyleBook,指定主 Form 的 StyleBook 属性为 JetStyleBook,则整个界面的背景底色就是带质感的黑色。这个带质感的黑色,是 JetStyleBook 里面的一个黑色图片。

整个界面的最底部是一个 TVertScrollBox 作为托盘。这样当手机屏幕长度不同时,超出屏幕的部分,可以上下滑动。

这个界面最有特色的部分是顶部有背景图,背景图是模糊的,上面叠加了一些白色的文字。上面还有一个圆形头像,头像外面还有一个白色的圆圈。

1. Align 的 Content 方式:

按照 Delphi 常规的界面摆放方法,背景图充满整个空间,也就是其 Align 做成一个 Client 的摆放。然后其它控件摆放到这个背景图上,在背景图上进行布局。但这里的问题是,背景图使用了一个 Blur 控件让图片模糊掉。这样一来,摆放在背景图上的所有控件显示出来都是模糊的。

仔细观察后发现,屏幕顶部,分为三块:ToolBar1 置顶(Top),另外一个 TRectangle 置底(Bottom),中间一个 Layout 充满(Client)。这三个都重叠在背景图上,但他们不是摆放在背景图上,而是和背景图平级。通常这种摆放,会把背景图挤走。这里没有把背景图挤走,而是重叠在背景图上面,原因是,背景图的 Align 设置为 Content。这个 Content 是 FireMonkey 才有的。以前的 VCL 没有这个 Align 方式。

2. 背景图不是 TImage 而是 TRectangle:

只要设置 TRectangle 的 Fill.Kind 为 Bitmap,然后为它的 Bitmap 指定图片,它就显示图片了。

3. 底部的 TRectangle 的用意:

底部放了一些白色的数字文字,叠加在底部的 TRectangle 上面。这个 TRectangle 是用来将背景图加深颜色,使得白色文字能更好显示。用 TRectangle 来加深颜色的方式是,将其 Fill.Color 设置为 #19000000,也就是其颜色值为0,其透明值为 19,而不是 255.。如果是 255 则不透明。这种半透明的设置,使得它加深了它背后的背景图,能够更好突出白色文字。

4. 圆圈头像:

4.1. 在中间处于 Client 摆放方式的 Layout 上面,摆放了一个 Align 为 Bottom 的 TText 用来显示人名。

4.2. 在上述 Layout 上面,摆放一个 TCircle ,其 Align 设置为 Client,因为底部有一个 TText,因此它占据背景画面的上半部分,又在 TToolBar 的下面。这个 TCircle 用来显示头像外围的白色圆圈。因此设置其 Fill.Kind 为 None,则它中心没颜色,直接透明。设置它的 Stroke 的颜色为白色,Thickness 为 2,也就是圆圈边框线条的粗细为2。这样就有一个白色的圆圈。

4.2. 在上述 TCircle 上面,摆放一个 TCircle,这个 TCircle 的 Fill.Kind 设置为 Bitmap,加载头像进去。头像图片在里面显示为一个圆形的图片。重点:这个 TCircle 的 Margin 需要设置为 4.这样才能不覆盖它下面的白色圆圈的 TCircle,这样白色圆圈才能显示出来。

5. 抬头的按钮:

顶头上 ToolBar 上面摆了一个按钮。这个按钮直接就是一个 TImage。这个 TImage 加载了多个不同分辨率的图片。分辨率分别是:

  72 X 72
  96 X 96
  144 X 144
  192 X 192

 

总结:

1. FireMonkey 里面,控件 Align 属性的 Content 方式,即可以充满整个空间,又可以不被其它设置为 Top, Bottom, Client 的平级控件挤走,而是重叠在上面,但又不是从属于它。

2. 图片显示可以不用 TImage 而是用 TRectangle。

3. 半透明,可以用 TRectangle 的 Fill.Color 设置其 TAlphaColor 的透明度部分的数值,并把所有颜色值设置为 0.

4. 整个界面背景,用 StyleBook 来实现。

 

DelphiXE10.2.3 Firemonkey下窗体的编译异常处理 环境WIN10+Delphi XE10.2.3+HUAWEI MAte8 开发APP过程中对窗体的显示和切换时发现市场出现编译调试异常,不是语法问题,而是Firemonkey封装过程中对JAVA的那些东西的调用过程的问题. 经验总结: 1,除APP主窗体外的其他窗体,如果没有其他语法或业务逻辑冲突的情况下,在FormClose中定义 Action := TCloseAction.caFree; 可... 阅读详情

相关推荐

Firemonkey扩展增强:iOS 实现程序运行时更改锁定显示方向(LockOrientations)

1、为不同的form指定不同的支持方向。 2、动态(运行时)强制更改显示方向。

TU2的专栏 2986

【Delphi FireMonkey实现窗体嵌入的功能】

以前在VCL模式下,个人喜欢实现选项卡的方式打开子窗体,即每打开一个子窗体,就在主窗体的PageControl上增加一个Page,并将子窗体嵌入到新增的Page中。后面开始玩FMX,发现VCL的方式不能直接套用,需要做一些修改才可以用,以下就是针对此问题做个笔记,希望对有需要的朋友们有用。以上两步就能实现FMX模式下的窗体嵌入功能,如下图,中间图表就是调用子窗体内容。功能描述:将子窗体在主窗体的Layout里面打开显示。子窗体显示的区域:主窗体的Layout3。以下是打开子窗体的函数。

1272

Delphi 2024 跨平台开发实战:FireMonkey 构建 iOS/Android 双端 App 核心步骤 5 步

本文详细介绍了使用Delphi 2024和FireMonkey框架进行跨平台开发的5个核心步骤,涵盖环境配置、框架概念、项目结构、功能实现到调试部署的全流程。通过实战案例和代码示例,帮助开发者高效构建同时兼容iOS和Android的原生应用,提升Delphi编程效率。

weixin_33508411的博客 293

FireMonkey常用控件

FireMonkey是一个跨平台的 GUI 开发框架,它支持多种平台,包括 Windows、macOS、iOS、Android 和 Linux。FireMonkey 提供了丰富的控件,以满足开发者的各种需求。 常用的 FireMonkey 控件有: TButton:按钮控件 TLabel:标签控件 TEdit:文本输入控件 TListBox:列表框控件 TComboBox:组合框控件 TProg...

weixin_42579969的博客 623

FireMonkey APP多语言支持实现与源码解析

Delphi FireMonkey,简称FMX,是Embarcadero公司开发的一种现代应用程序框架,它继承了Delphi的历史和技术遗产,并在此基础上进行了创新和扩展。作为Delphi的一部分,FireMonkey提供了一套丰富的控件集,支持开发者创建跨平台的应用程序,这些应用程序不仅可以在Windows、macOS上运行,还能被部署到iOS和Android设备上。FireMonkey的核心优势在于其直观的视觉设计工具和组件,与VCL相比,它提供了更加灵活的UI构建能力。

weixin_30218749的博客 755

交互手势FireMonkey应用实例(唐山市开滦一中 董艳凤)

交互手势FireMonkey应用实例 单位 唐山市开滦一中 作者 董艳凤 使用说明:手机APP安装后,在枫叶处,手指右划或者是下划 出现歌曲,字的颜色改变。 包含着apk文件,在Android手机上安装APP直接使用 现在移动设备中手势是主要使用方式,手指类似鼠标光标(对于Windows和Mac OS X)使用。手势可以由一个控制的父母操纵包括层次结构和第一个处理手势等问题...。下面是具体一些说明 1手势平台 Android 或者Mac OS 2如何使用手势 2.1启用标准手势 2.2实现OnGesture事件处理程序 2.3启用交互手势FireMonkey

APP 开发之使用 Frame 做界面如何简化代码

摘要:本文介绍了使用Delphi的FireMonkey框架开发APP界面时,如何通过继承优化代码结构。传统方法是为每个界面创建TForm,但手机APP建议使用更轻量的TFrame。作者提出设计一个基类TFrameBase,包含通用UI元素(如返回按钮、工具栏)和关闭逻辑,子类只需继承基类并添加特定功能。通过泛型方法ShowMyFrame统一创建子类实例,减少了重复代码。文中以文件列表界面为例,演示了如何继承基类并绑定数据。该方法实现了界面堆叠和逐级返回效果,提高了开发效率,适用于多层级、风格统一的APP界面

pcplayer的博客 1384

DelphiEx7外国人写的 FireMonkey DesktopDemo

在外国网站下载的很不错的例子代码,几乎包含了所有的 DelphiXe新的UI特性和类库的用法,有很好的参考价值。

FireMonkey 界面的玩法

FireMonkey 用来做 APP 的一个特点就是做界面通吃各平台,因为它自己画图。因为自己画图,所以如果 APP 需要一些效果,也可以程序员自己搞定,通过组合各种形状,无需找第三方控件。 先看一个效图图: 第一个图是界面元素,第二个图中的圆圈发光,是因为鼠标点下去(或者手指头触摸)。 这种效果,我摸索了一下,发现用 FireMonkey 完全可以在设计期用现场控件堆出...

pcplayer的博客 7511

使用Delphi控件完成界面基本布局 (一)

本案例仅使用Delphi自身控件实现,为初学APP开发者提供学习帮助(带源码及详细批注)。案例中演示了使用Delphi控件完成界面基本布局,包括TLayout、TVertScrollBox、TGridPanelLayout、TTabControl 等控件的基本使用。

delphi10.3.1-Ribbon控件

通过社区版,以GetIt方式,下载安装后的Ribbon控件。按时要求分别存放到相应位置,安装即可。

Delphi D10.X VCL和FireMonkey之间的常见差异介绍

尽管FireMonkey控件与VCL控件看上去非常的相似性,但是许多小的差异可能会使熟悉VCL的人不知所措。这里给大家介绍其中一些差异。 VCL与FireMonkey不兼容 警告: FireMonkey与VCL本质上是完全不同的,FireMonkey(FMX)和可视组件库(VCL)不兼容,因此不应在同一模块中一起使用。也就是说,一个模块应该是FireMonkey或VCL之一。不兼容...

tanqth的专栏 2万+

从零到一:用MSC Nastran Patran搞定悬臂翼颤振分析(附完整模型文件)

本文详细介绍了使用MSC Nastran和Patran进行悬臂翼颤振分析的完整流程,从几何建模、网格划分到模态分析和颤振求解。通过具体案例讲解关键参数设置和操作技巧,帮助工程师掌握气动弹性分析的核心方法,并附赠完整模型文件供实践参考。

weixin_42563415的博客 439

My Firest FireMonkey App

FireMonkey的前半个月!

wszysystem的专栏 294

LVGL在STM32H743IIT6上的性能优化技巧:如何提升图形界面刷新速度

本文详细介绍了在STM32H743IIT6高性能MCU上优化LVGL图形界面刷新速度的实战技巧。通过利用芯片的DMA2D硬件加速模块替代低效的软件画点,将绘制缓冲区放入SDRAM并启用双缓冲机制,以及合理配置CPU缓存与MPU,有效解决了界面卡顿问题。文章还涵盖了LVGL引擎调优、内存架构优化等关键步骤,帮助开发者充分发挥STM32H743的硬件潜力,实现流畅的图形界面体验。

vscode6remote的博客 306

告别第三方应用!用Android原生API搭建Miracast投屏接收器

本文深入探讨如何利用Android原生API开发Miracast接收器,绕过第三方依赖,实现高效的屏幕共享。通过Wi-Fi P2P直连、反射调用隐藏API和RTSP会话协商等核心技术,为开发者提供了一套完整的Miracast接收端解决方案,适用于多屏协同场景。

weixin_29174141的博客 388

firemonkey获取当前文件所在路径的方法

在之前,我们知道有三种方法:  ExtractFilePath(ParamStr(0))  ExtractFilePath(Application.ExeName)  GetCurrentDir + '\'   在firemonkey中,Windows模式下第一种、第三种还有效:  ExtractFilePath(ParamStr(0))  GetCurrentDir + '\' ...

weixin_34238633的博客 256

ESP32学习笔记03-日志打印

日志分为5个等级。

Car12 1415

在Vcl和FireMonkey应用程序中启用TXMLDocument 的XPath(selectNode,selectNodes)方法

该TXMLDocument的类让你来操作VCL和FireMonkey应用程序的XML文件,但这个类没有实现直接的方式来调用XPath的相关方法(selectNode,的selectNodes),所以你必须编写一组辅助函数来调用这些方法。 通常你可以写这样的东西 function selectSingleNode(ADOMDocument: IDOMDocument; const nodeP...

weixin_30435261的博客 251

用R来做一个临床研究亚组分析的森林图

在编程语言里R语言最强大的功能是做图功能,我们知道在做Meta分析的时候会需要做森林图,实际上我们在很多临床研究中也经常看到森林图,主要是亚组分析的森林图,比如下面这篇文章里的一个森林图: 今天就教教大家怎么用R语言来做上面这种亚组分析的森林图 1. 在Excel里编辑好数据,按照下面的格式整理,保存为csv格式 2. 下载安装R跟Rstudio R软件的下载地址: https://mirrors.tuna.tsinghua.edu.cn/CRAN/ Rstudio下

Mrrunsen的博客 5340

如何完全卸载axure软件以及解决安装axure后打不开的问题【2023年】

如何完全卸载axure软件以及解决安装axure后打不开的问题【2023年】

念兮为美 5138

FMX APP SpeedButton 图标的颜色 - 界面设计

做手机 APP 的话,按钮最好是用 TSpeedButton。最常见的用法就是一个界面最顶上左边那个向左的箭头按钮 -- 退出这个界面。 默认的办法是设置这个 TSpeedButton 的 StyleLookup,里面有很多默认的图标,包括向左的箭头。 然后,这个 APP 在安卓下,就是安卓的默认图标;在 iOS 下,就是 iOS 的默认图标。在 Windows 下,它显示 Windows 的...

pcplayer的博客 1513

PCL 建筑物点云立面和平面分割提取【2025最新版】

在建筑物点云中,立面点和平面点的法向量存在明显的差异,根据法向量在Z方向的分量设置相应得阈值即可实现立面点与平面点的分割。

点云侠的博客 1960

Delphi FireMonkey APP 如何获得当前系统语言设置

用 Delphi 的 FireMonkey 框架,可以写手机 APP,Android 和 iOS 都支持。 FireMonkey 框架还提供了一个函数:LoadLangFromStrings,加载对应的语言内容,程序界面上的元素会自动显示加载的语言里的文字。比如 TLabel.Text 就会自动变化。这里,TLabel 有一个属性:AutoTranslate,默认是 True,设计期可以在属性编

pcplayer的博客 1156

37、基于视觉的轻量级面部呼吸和心率测量技术

本文提出了一种基于视觉的轻量级面部呼吸和心率测量技术,通过远程光电容积脉搏波描记法(RPPG)和面部振动信息实现非接触式生理信号采集。创新性地结合框选和特征点选择多个感兴趣区域(ROI),并采用光流跟踪、主成分分析(PCA)和集成经验模态分解(EEMD)等方法优化信号处理流程。实验结果表明,该方法在测量精度和稳定性方面优于传统方法,并可在树莓派4等低功耗平台上实现实时运行,具有广泛的应用前景。

r7s8t的博客 307

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: Delphi Android Deployment 文件究竟在哪里?
下一篇: Delphi 编译发布安卓的APP名字问题
pcplayer
博客等级 码龄26年 633粉丝 284原创
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值