OPPO主题组件开发 - 组件内容自适应

oppo,主题,组件,开发,内容,适应 · 浏览次数 : 53

小编点评

**组件自适应方法** **1. 根据宽高等比例缩放** * 使用元素设计位置 `(x,y)`,其中 `x` 是宽度的比例,`y` 是高度的比例。 * 支持两种缩放方式: * 按宽高比例缩放 * 按实际宽度和高度比例缩放 **2. 固定内容在中间** * 判断实际尺寸是否大于或等于 `450 + 75`。 * 如果大于,内容居中。 * 使用 `ifelse()` 函数根据实际宽度判断内容位置。 **代码示例:** ``` ``` **其他说明:** * `width` 和 `height` 是设计稿的尺寸。 * `width/2` 和 `height/2` 是对原尺寸的垂直和水平分割点。 * `wx` 和 `hy` 是实际宽度和高度的缩放倍数。

正文

OPPO桌面有 3*5、3*6、4*5、4*6、5*5、5*6 等布局,随着布局不同,组件大小也会发生改变;不同型号手机分辨率不同,组件大小也不一致。这就要求组件内容做到自适应。

说明

OPPO主题组件自适应有两种表现方式,如下图所示。可以很明显的看到,第一种是根据宽高等比例缩放内容,第二种是固定内容在中间。
image

1. 组件内容根据宽高等比例缩放

我们的设计宽高以450为基准,计算实际宽高和设计宽高的比率,然后在代码实现上用 元素设计位置(x,y) x 比率 + 设计宽高 x 比率,就可以实现内容根据宽高等比例缩放;此外还可以配合使用 实际宽高 x 百分比 的方式。示例如下:

<Var name="design_w" expression="450" />
<!-- 默认间距要求48 -->
<Var name="margin" expression="48" />
<Var name="ratio_x" expression="#view_width/#design_w" />
<Var name="ratio_y" expression="#view_height/#design_w" />
<!-- 组件实际宽高默认内置 #view_width、#view_height -->
<Group w="200*#ratio_x" h="#view_height">
	<Group w="52*#ratio_x" h="#view_height/2">
		<Text y="60*#ratio_y" w="#view_width-200*#ratio_x-#margin" text="测试" />
	</Group>
</Group>

2. 固定内容在中间

已知设计稿的尺寸是450,判断实际尺寸 #view_width 大于 450+75 的时候就内容居中。
+75 是 oppo圆角;一定要大于 +75的原因是自己做的背景避免被系统裁剪,那么我们实际制作的时候就可以使用整体宽度缩减一点、高度缩减一点的写法,即 #view_width-(450 +75) > 0 使用,示例如下:

<Var name="oppo_bg_x" expression="ifelse(gt(#view_width-525,0),1,0)" type="number" persist="true" />
<Var name="mjui_xfx" expression="ifelse(gt(#view_width-525,0),int(#view_width-525),0)" type="string" persist="true" />
<Var name="mjui_xfy" expression="ifelse(gt(#view_height-525,0),int(#view_height-525),0)" type="string" persist="true" />

<Var name="w" expression="#view_width+int(@mjui_xfx)" type="number" />
<Var name="h" expression="#view_height+int(@mjui_xfy)" type="number" />

<Var name="wx" expression="#w/450" type="number" />
<Var name="hy" expression="#h/450" type="number" />
<Image name="system" src="bg.png" isBackground="true" />

<Group x="abs(int(#mjui_xfx)/2)" y="abs(int(#mjui_xfy)/2)">
	<Image src="a.png" x="#wx*37" y="#hy*84" w="min(#wx*100,100)" h="min(#wx*100,100)" align="left" alignV="center" />
</Group>

与OPPO主题组件开发 - 组件内容自适应相似的内容:

OPPO主题组件开发 - 组件内容自适应

OPPO桌面有 3*5、3*6、4*5、4*6、5*5、5*6 等布局,随着布局不同,组件大小也会发生改变;不同型号手机分辨率不同,组件大小也不一致。这就要求组件内容做到自适应。 说明 OPPO主题组件自适应有两种表现方式,如下图所示。可以很明显的看到,第一种是根据宽高等比例缩放内容,第二种是固定内

OPPO主题组件开发 - 调试与预览

本篇作为 OPPO主题组件调试与预览 文档的补充,因为它真的很简单而且太老,一些命令已发生变化😪 1. 调试前准备 1. PC 端下载 adb命令工具 下载 https://adbdownload.com/,或从其他地方下载也可 解压,放在你想放的文件夹下 配置环境变量 右键 我的电脑/此电脑 选

OPPO 后端开发 一、二面面经

你好,我是 Guide,看了这么多面试成功的经验分享,今天来看一个读者分享的 Oppo 秋招面试失败经历。 面经合集请看:Java面试题&面经精选集。 下面是正文(文中的我为读者本人)。 个人情况 我的学校可能比大部分同学都比较差,是一个很一般的二本,土木专业转的计算机专业。 大三之前一直在做 C

[转帖]高性能 -Nginx 多进程高并发、低时延、高可靠机制在百万级缓存 (redis、memcache) 代理中间件中的应用

https://xie.infoq.cn/article/2ee961483c66a146709e7e861 关于作者 前滴滴出行技术专家,现任 OPPO 文档数据库 mongodb 负责人,负责 oppo 千万级峰值 TPS/十万亿级数据量文档数据库 mongodb 内核研发及运维工作,一直专注于