HarmonyOS 鸿蒙Next中「3.2 图像组件」图像组件Image详解及应用
HarmonyOS 鸿蒙Next中「3.2 图像组件」图像组件Image详解及应用
Image类继承自Component类,是用于显示图像资源的组件。比如我们在做新闻列表时,需要显示新闻的封面图;再比如我们动态加载显示用户头像;朋友圈发出的九宫格图片等等,都可以使用Image组件进行显示。
public class Image extends Component {
/**
* 设置图像的裁剪方向
* CLIP_HORIZONTAL 水平裁剪模式
* CLIP_VERTICAL 垂直裁剪模式
*/
public static final int CLIP_HORIZONTAL = 1;
public static final int CLIP_VERTICAL = 2;
/**
* 设置裁剪对齐模式
* CLIP_DIRECTION_NOT_SET 未设置的图像裁剪方向
* CLIP_GRAVITY_NOT_SET 未设置的图像裁剪对齐模式
* GRAVITY_BOTTOM 裁剪图像的底部对齐模式
* GRAVITY_CENTER 裁剪图像的中心对齐模式
* GRAVITY_LEFT 裁剪图像的左侧对齐模式
* GRAVITY_RIGHT 裁剪图像的右侧对齐模式
* GRAVITY_TOP 裁剪图像的顶部对齐模式
*/
public static final int GRAVITY_BOTTOM = 2048;
public static final int GRAVITY_CENTER = 4096;
public static final int GRAVITY_LEFT = 256;
public static final int GRAVITY_RIGHT = 512;
public static final int GRAVITY_TOP = 1024;
//默认的构造函数,其他两个构造函数目前不做详细讲解,它们多用于自定义图像组件,后续章节会详细介绍,此处略过
public Image(Context context) {}
/**
* 设置要显示图像的资源ID
*/
public void setPixelMap(int resId) {}
/**
* 为此图像的每个圆角设置半径
* 数组长度为8,成对出现,分别表示x轴和y轴半径
*/
public void setCornerRadii(float[] radii) {}
/**
* 为此图像的四个圆角设置半径
*/
public void setCornerRadius(float radius) {}
/**
* 设置图像的缩放模式
*/
public void setScaleMode(Image.ScaleMode scaleMode) {}
/**
* 设置裁剪对齐模式
* 如果设置为GRAVITY_LEFT,那么当图像的宽度超过组件的宽度时,图像的右边部分将被裁剪
*/
public void setClipGravity(int clipGravity) {}
/**
* 设置图像的裁剪方向
* 如果图像大小超出了该组件的大小,则可以对图像进行垂直和水平裁剪
* 水平裁剪不会改变图像的垂直内容;垂直裁剪不会改变图像的水平内容。
*/
public void setClipDirection(int clipDirection) {}
}
Image组件应用
每个组件的使用我都以两种方式来编写,一种是代码方式;另一种是XML资源文件的方式。
layout.setWidth(MATCH_PARENT);
layout.setHeight(MATCH_PARENT);
layout.setOrientation(Component.VERTICAL);
Image image = new Image(this);
image.setLayoutConfig(layoutConfig);
image.setMarginsLeftAndRight(10,10);
image.setMarginsTopAndBottom(20,20);
image.setPadding(10,10,10,10);
/**
* 设置图像的裁剪方向
* CLIP_HORIZONTAL 水平裁剪模式
* CLIP_VERTICAL 垂直裁剪模式
*
* 如果图像大小超出了该组件的大小,则可以对图像进行垂直和水平裁剪
* 水平裁剪不会改变图像的垂直内容;垂直裁剪不会改变图像的水平内容。
*/
image.setClipDirection(Image.CLIP_HORIZONTAL);
/**
* 设置裁剪对齐模式
* CLIP_DIRECTION_NOT_SET 未设置的图像裁剪方向
* CLIP_GRAVITY_NOT_SET 未设置的图像裁剪对齐模式
* GRAVITY_BOTTOM 裁剪图像的底部对齐模式
* GRAVITY_CENTER 裁剪图像的中心对齐模式
* GRAVITY_LEFT 裁剪图像的左侧对齐模式
* GRAVITY_RIGHT 裁剪图像的右侧对齐模式
* GRAVITY_TOP 裁剪图像的顶部对齐模式
* 如果设置为GRAVITY_LEFT,那么当图像的宽度超过组件的宽度时,图像的右边部分将被裁剪
*/
image.setClipGravity(Image.GRAVITY_LEFT);
/**
* 为此图像的每个圆角设置半径
* 数组长度为8,成对出现,分别表示x轴和y轴半径
*/
image.setCornerRadii(new float[]{10,30,60,90,10,30,60,90});
/**
* 设置要显示图像的资源ID
*/
image.setPixelMap(ResourceTable.Media_template);
/**
* 设置图像的缩放模式
*/
image.setScaleMode(Image.ScaleMode.CLIP_CENTER);
layout.addComponent(image);
super.setUIContent(layout);
<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayout
xmlns:ohos="http://schemas.huawei.com/res/ohos"
ohos:height="match_parent"
ohos:width="match_parent"
ohos:orientation="vertical">
<Image
ohos:height="200px"
ohos:width="200px"
ohos:margin="20fp"
ohos:image_src="$media:template"
ohos:scale_mode="clip_center"
ohos:clip_alignment="center"
ohos:clip_direction="vertical"/>
</DirectionalLayout>
Image和Text组合应用
在上面这个UI界面上,我首先给布局设置了灰色背景,然后设置两个组件居中显示。左侧显示一个图片,右侧显示一串提示字符。实际代码如下所示:
<?xml version="1.0" encoding="utf-8"?>
<DependentLayout
xmlns:ohos="http://schemas.huawei.com/res/ohos"
ohos:height="match_parent"
ohos:width="match_parent"
ohos:alignment="center"
ohos:background_element="#F8F3F3">
<DirectionalLayout
ohos:height="140fp"
ohos:width="match_parent"
ohos:orientation="horizontal"
ohos:alignment="center"
ohos:background_element="#EBE6E6">
<Image
ohos:height="120fp"
ohos:width="120fp"
ohos:image_src="$media:logo"/>
<Text
ohos:height="match_parent"
ohos:width="match_content"
ohos:text_size="40fp"
ohos:text="欢迎一起建设HarmonyOS生态"/>
</DirectionalLayout>
</DependentLayout>
更多关于HarmonyOS 鸿蒙Next中「3.2 图像组件」图像组件Image详解及应用的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,图像组件Image是用于显示图片的核心组件之一。Image组件支持多种图片格式,包括PNG、JPEG、WebP等,并且可以通过属性设置图片的缩放模式、裁剪方式等。
Image组件的主要属性包括:
src
:指定图片资源的路径,可以是本地资源或网络资源。scaleType
:设置图片的缩放模式,常见的有center
、centerCrop
、fitXY
等。clipDirection
:设置图片的裁剪方向,如left
、right
、top
、bottom
。alpha
:设置图片的透明度,取值范围为0到1。
Image组件的应用场景广泛,可以用于展示用户头像、产品图片、背景图等。通过合理设置属性,可以实现图片的自适应显示、裁剪、透明度调整等功能。
在鸿蒙Next中,Image组件的使用示例代码如下:
<Image
ohos:id="$+id:image"
ohos:width="200vp"
ohos:height="200vp"
ohos:scaleType="centerCrop"
ohos:clipDirection="top"
ohos:alpha="0.8"
ohos:src="$media:example_image"/>
该代码定义了一个宽高为200vp的Image组件,设置了图片的缩放模式为centerCrop
,裁剪方向为top
,透明度为0.8,并指定了图片资源为example_image
。
Image组件还支持通过代码动态设置属性,例如:
Image image = (Image) findComponentById(ResourceTable.Id_image);
image.setPixelMap(ResourceTable.Media_example_image);
image.setScaleType(Image.ScaleMode.CENTER_CROP);
image.setClipDirection(Image.ClipDirection.TOP);
image.setAlpha(0.8f);
通过上述代码,可以在运行时动态修改Image组件的图片资源、缩放模式、裁剪方向和透明度。
总之,Image组件是鸿蒙Next中用于显示图片的重要组件,通过灵活设置其属性,可以实现丰富的图片展示效果。
更多关于HarmonyOS 鸿蒙Next中「3.2 图像组件」图像组件Image详解及应用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,Image组件用于显示图像资源。它支持本地图片、网络图片以及Base64编码的图片。通过设置src
属性来指定图片源,alt
属性提供替代文本。Image组件还支持缩放模式(如cover
、contain
等)以适应不同布局需求。开发者可以通过onLoad
和onError
事件处理图片加载成功或失败的情况。应用场景包括展示用户头像、产品图片等,提升应用界面的视觉效果。