鸿蒙Banner图一多适配不同屏幕
认识一多
随着终端设备形态日益多样化,分布式技术逐渐打破单一硬件边界,一个应用或服务,可以在不同的硬件设备之间随意调用、互助共享,让用户享受无缝的全场景体验。而作为应用开发者,广泛的设备类型也能为应用带来广大的潜在用户群体。但是如果一个应用需要在多个设备上提供同样的内容,则需要适配不同的屏幕尺寸和硬件,开发成本较高。HarmonyOS系统面向多终端提供了“一次开发,多端部署”(后文中简称为“一多”)的能力,让开发者可以基于一种设计,高效构建多端可运行的应用。

“一多”建议从最初的设计阶段开始就拉通多设备综合考虑。考虑实际智能终端设备种类繁多,设计师无法针对每种具体设备各自出一份UX设计图。“一多”建议从设备屏幕宽度的维度,将设备划分为六大类。设计师只需要针对这六大类设备做设计,而无需关心具体的设备形态。
Banner图一多适配
我们在使用Banner图时,会发现在中大屏设备上,Banner的宽度太大,当我们将高度固定时,在大屏设备上,高度又太小,图片裁剪严重。若宽高采用比例设置,高度又太大,在不同的屏幕上要么太小或太大,显示效果都不是很理想。
Banner有一个属性displayCount,用来控制一屏显示多少个组件,我们在小屏设备上显示一张图片,在中大屏设备上一屏显示2张图片。再使用aspectRatio设置合适的宽高比,就能达到我们想要的效果了。
我们现在只需要判断设备是小屏还是中大屏就可以了,这里借助GridRow栅格组件的断点能力,针对小屏和非小屏设备,设置不同的displayCount和aspectRatio就可以了,实现小源码如下。
@ComponentV2
struct Index {
@Local breakPoint: string = 'unknown'
@Local images: string[] = []
@Computed
get isSm(): boolean {
return this.breakPoint === 'sm'
}
build() {
Column() {
GridRow({
columns: 1,
breakpoints: { reference: BreakpointsReference.WindowSize }
}) {
GridCol() {
Swiper() {
Repeat(this.images).each((data: Readonly<RepeatItem<string>>) => {
Image(data.item)
}).key((item) => item)
}
.width('100%')
.height('100%')
.loop(false)
.duration(1000)
.autoPlay(false)
.indicatorInteractive(true)
.itemSpace(this.isSm ? 0 : 32)
.displayCount(this.isSm ? 1 : 2)
.indicator(new DotIndicator().itemWidth(8)
.itemHeight(8)
.selectedItemWidth(12)
.selectedItemHeight(8)
.color($r('app.color.divider_color'))
.selectedColor($r('app.color.brand_color')))
}
}.width('100%').aspectRatio(this.isSm ? 2.5 : 4.5).onBreakpointChange((point) => {
this.breakPoint = point
})
}.width('100%').justifyContent(FlexAlign.Start)
}
}
在不同设备的显示效果如下。

鸿蒙Banner图一多适配不同屏幕的更多相关文章
- Android适配(屏幕适配、国际化适配)-转
首先来说一下Android的屏幕适配: 关于Android屏幕的一些基本概念知识,自行充电..在此只介绍实际开发过程中的使用 1.说到Android的屏幕适配,首当其冲的就是图片的适配 图片适配遵循两 ...
- 人工智能-智能创意平台架构成长之路(四)-丰富多彩的banner图生成解密第一部分(对标阿里鹿班的设计)
我们之前讲了很多都是平台架构的主体设计,应用架构设计以及技术架构的设计,那么现在我们就来分享一下丰富多彩的banner图是怎么生成出来的. banner图的生成我们也是不断的进行迭代和优化,这块是最核 ...
- Android屏幕适配全攻略(最权威的官方适配指导)屏幕尺寸 屏幕分辨率 屏幕像素密度 dpdipdpisppx mdpihdpixdpixxdpi
Android屏幕适配全攻略(最权威的官方适配指导)原创赵凯强 发布于2015-05-19 11:34:17 阅读数 153734 收藏展开 转载请注明出处:http://blog.csdn.net/ ...
- Web App适配不同屏幕的几点建议
安卓设备在屏幕尺寸和像素密度上差别很大,因此在使用WebView加载网页时就需要考虑到这种差别,对我们的网页做出精心的设计以在不同的屏幕上都能得到合适的展现.通常情况下,我们需要考虑到两个因素:1.视 ...
- CSS3自适配手机屏幕[转]
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- 原生态JS实现banner图的常用所有功能
虽然,用jQuery实现banner图的各种效果十分简单快捷,但是我今天用css+js代码实现了几个banner图的常用功能,效果还不错. 此次,主要想实现以下功能: 1. banner图循环不间断切 ...
- JS 实现banner图的滚动和选择效果
CSS+JS实现banner图滚动和点击切换 HTML 部分代码: <body> <div id="banner"> <div id="in ...
- 做一个常规的banner图——负边距的使用、banner图的拼法
在这之前,首先要了解如何设置块级元素在块级元素水平居中 方法: 设置子容器为定位元素 水平居中 left:50%:margin-left:-width/2: 垂直居中 top:50%:margin-t ...
- 使用CSS3中的input标签与lable标签组合实现banner图的切换
在做网页时,我们经常可以碰到banner图的切换.对于那些JS薄弱的同学来说,这就很尴尬了.今天,我来告诉大家如何使用CSS做出banner图切换的效果. 这里,用到了lable标签与input的组合 ...
- 这是假的JS——利用CSS Animation实现banner图非交互循环播放
话不多说,先来张html和css代码截图~ 注意事项: 1.如果想在每张图前进行停顿,可以在keyframes中的每一步前加上一小段与下一张相同的代码: 2.如果想要在实现无违和感的最后一张与第一张的 ...
随机推荐
- ibatis执行存储过程,java.lang.ArrayIndexOutOfBoundsException: 0
在项目开发中遇到一个问题,ibatis执行存储过程时报错 <procedure id="insertStatisticsResult_settle" parameterCla ...
- lbs 地理位置
lbs 地理位置 https://caorong.github.io/2018/05/04/lbs/ https://www.cnblogs.com/lbser/p/3310455.html http ...
- hacs安装
安装 HACS 直接使用 Docker 的可视化管理面板 Portainer 或者通过命令行进入 Docker 容器,然后执行以下安装命令: docker exec -it <容器名称或容器ID ...
- Maven 打 JAR 包
项目和依赖分别打入独立 JAR 包 使用 Maven Jar Plugin 插件,可以将项目自身单独打成一个 JAR 包,项目依赖的 JAR 包统一放置到指定目录. 在项目的 pom.xml 中添加如 ...
- Homebrew 使用
使用 brew install brew uninstall|remove|rm brew list # *显示已安装软件列表 brew upgrade # 更新 Homebrew brew sear ...
- 计算机Power电源状态
在计算机电源管理中,S1, S2, S3, S4 代表不同的电源状态或睡眠状态. 了解这些状态,对计算机设备理解功耗及工作状态有很大帮助.最近公司开会,系统同事有讲S3状态功耗很低,我猜和电脑的睡眠. ...
- Vuex的四个轻骑兵:mapState、mapGetter、mapMutation、mapAction(转载)
vuex进阶一.state1.1 引入vuex 以后,我们需要在state中定义变量,类似于vue中的data,通过state来存放状态 import Vue from 'vue'import Vue ...
- SQL 求中位值
题目A median is defined as a number separating the higher half of a data set from the lower half. Quer ...
- LoRaWAN网关价格干穿地板了
废话不多说,不要998,不要688,以太网版本只要398,4G版本只要498. 先上图片 1.1 产品特点 ◆ 高性能嵌入式硬件平台 ◆ 使用工业级 Cat.1 4G 模块 ◆ 宽压输入 DC 9-2 ...
- CTF中特别小的EXE是怎么生成的
我们在打CTF时候,出题的爷爷们给出的exe都很小 就10k左右,有的甚至就5k,那时候我很郁闷啊.现在我也能了啊哈哈 不多bb按如下操作: 我们来看看正常的release生成的代码 #include ...