HarmonyOS实战—Image组件的剪切和缩放
1. Image图片标签
- 概述:图片(
Image
)是用来显示图片的组件。 - 常见的属性:id,长、宽、高等。
- 具体可以参考华为开发手册(组件的通用属性): https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ui-java-component-common-xml-0000001138483639
- 比较重要的属性:
- 蓝色的区域就是背景图片
- 如果
image
标签比较大,而要展示的图片比较小,前景图片就盖不住背景图片,背景图片就会展示出来。
工作当中,关于image
标签有两个习惯:
- 大小会包裹内容,图片多大,
image
标签多大 image
标签基本不会设置背景图片,只会设置前景图片,因为前景图片才是要展示出来的图片
- 新建项目:ImageApplication
<Image ohos:height="1000px" ohos:width="1000px" ohos:image_src="$media:girl1" ohos:background_element="#0000FF" />
- 使用的girl图片如下,可下载自取
- girl图片信息:
- 运行,会发现蓝色区域其实就是
image
标签,里面的girl
就是展示的前景图片,默认情况是不剪切、不缩放的形式展示,把展示的图片直接放在image
正中间
2. 图片剪切 clip_alignment
- 查看girl图片信息
- 把宽高改为
100px
,因为image
标签要比真实图片小的时候,才需要剪切
<Image ohos:height="100px" ohos:width="100px" ohos:image_src="$media:girl1" ohos:background_element="#0000FF" ohos:clip_alignment="center" />
- 运行:
- 发现只把中间的一小部分显示出来了,并且宽高大小均为
100px
- 所以,
ohos:clip_alignment="center"
表示把图片中间和部分进行剪切,然后再展示出来 ohos:clip_alignment="left"
,表示剪切左边的部分,其他属性以此类推
ohos:clip_alignment="left|top"
表示剪切左上部分图片
3. 缩放图片 scale_mode
- 使用的飞机图片如下,可下载自取
- 飞机图片的信息
<Image ohos:height="500px" ohos:width="500px" ohos:image_src="$media:plane" ohos:background_element="#0000FF" />
- 默认不剪切、不缩放,就是把图片放在正中间
ohos:scale_mode="inside"
:表示将图片按比例缩放到跟image
相同的或更小的尺寸并居中展示,但有可能不会填充整个组件- 如:把图片宽高改为
300px
<Image ohos:height="300px" ohos:width="300px" ohos:image_src="$media:plane" ohos:background_element="#0000FF" ohos:scale_mode="inside" />
- 可以看到缩小了,把原图等比例缩小了。是跟
image
相同的或更小的尺寸并居中展示。 - 改为
ohos:scale_mode="center"
:表示不缩放,按照image
大小来展示原图中间的那一部分
- 改为
ohos:scale_mode="stretch"
:表示拉伸,会把整个image
拉伸铺满。缩小后会把整个image
铺满
- 宽高改为
1000px
,改为ohos:scale_mode="zoom_center"
,:表示把原图等比例放大,放大到跟窄边一致的时候(也就是说:在放大的时候,只要这个图片已经铺满了其中一边,那么他是铺满了横向的宽度,所以就不会再缩放了,然后再居中显示)
<Image ohos:height="1000px" ohos:width="1000px" ohos:image_src="$media:plane" ohos:background_element="#0000FF" ohos:scale_mode="zoom_center" />
- 改为
ohos:scale_mode="zoom_start"
:放大后只会在上面显示,如:
- 改为
ohos:scale_mode="zoom_end"
:放大后只会在下面显示,如:
4. zoom_center 和 inside 区别:
- 当
image
比较大时,要展示的图片比较小时,inside
不会进行放大的,只能缩小。
- 而
zoom_center
就会把原图放大
5. 小节
1、图片剪切显示:
- 代码中:可以用
setClipGravity
方法 - xml文件中:可以用
clip_alignment
属性,上、下、左、右、居中,分别表示按照上、下、左、右、中间部位进行剪切。
2、图片缩放显示:
- 代码中:可以用
setScaleMode
方法 - xml文件中:可以用
scale_mode
属性
inside
:表示将原图按比例缩放到与Image相同或更小的尺寸,并居中显示。 有可能不会填充组件center
:表示不缩放,按Image大小显示原图中间部分。stretch
:表示将原图缩放到与Image大小一致。 拉伸。将组件填充。clip_center
:表示将原图按比例缩放到与Image相同或更大的尺寸,并居中显示。超过组件的部分被剪切掉。zoom_center
:表示原图按照比例缩放到与Image最窄边一致,并居中显示。zoom_end
:表示原图按照比例缩放到与Image最窄边一致,并靠结束端显示。zoom_start
:表示原图按照比例缩放到与Image最窄边一致,并靠起始端显示。
- 相关方法:
3、 实际开发当中,尽量不剪切、也不缩放,因为剪切或缩放了,就有可能导致图片失帧。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
openGauss数据库源码解析系列文章—— 执行器解析(一)
本篇我们开启第七章执行器解析中“7.1 执行器整体架构及代码概览”、“7.2 执行流程”及“7.3 执行算子”的相关精彩内容介绍。 执行器在数据库整个体系结构中起到承上启下的作用,对上承接优化器产生的最优执行计划,并按照执行计划进行流水线式的执行,对底层的存储引擎中的数据进行操作。openGauss数据库将执行的过程抽象成了不同类型的算子,同时结合编译执行、向量化执行、并行执行等方式,组成了全面、高效的执行引擎。本章着重介绍执行器的整体架构、执行模型、各类算子、表达式,以及编译执行和向量化引擎等全新的执行引擎。 7.1 执行器整体架构及代码概览 本节整体介绍执行器的架构和代码。 7.1.1 执行器整体结构 在SQL引擎将用户的查询解析优化成可执行的计划之后,数据库进入查询执行阶段。执行器基于执行计划对相关数据进行提取、运算、更新、删除等操作,以达到用户查询想要实现的目的。 openGauss在行计算引擎的基础上,增加了编译执行引擎和向量化执行引擎,执行器模块架构如图7-1所示。openGauss的执行器采用的是火山模型(volcano model),这是一种经典的流式迭代模型(pipe...
- 下一篇
还在死磕 Ajax?那可就 out 了!
江山代有人才出,各领风骚数百年。 前言 想当年面试时,AJAX 基本是必考题,像什么“异步调用、高性能”等是必答的。那时的 AJAX 是真的火,前端就没有不用 AJAX 的。 然而,古语云“人无百日好,花无百日红”,又云“江山代有人才出,各领风骚数百年”,对于 AJAX,当然也不例外。 这不,在最近这两年,我们明显可以发现很多新生框架中都有了 Fetch 的影子,而它的易用性和稳定性也是得到了反复验证的。 Fetch 的概念 Fetch 提供了对 Request 和 Response (以及其他与网络请求有关的)对象的通用定义。使之今后可以被使用到更多的应用场景中:无论是 service worker、Cache API、又或者是其他处理请求和响应的方式,甚至是任何一种需要你自己在程序中生成响应的方式。 它同时还为有关联性的概念,例如CORS和HTTP原生头信息,提供一种新的定义,取代它们原来那种分离的定义。 发送请求或者获取资源,需要使用 WindowOrWorkerGlobalScope.fetch() 方法。它在很多接口中都被实现了,更具体地说,是在 Window 和 Worke...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19