本文已收錄于專欄
❤️《鴻蒙開發》❤️
歡迎各位關注、三連部落客的文章及專欄,每周定期更新1-5篇基礎文章,共勉!
1、簡介
Image是用來顯示圖檔的元件,我們在開發中使用的非常頻繁!
2、屬性表
Image也是元件,它繼承自:ohos.agp.components.Component
我們在使用Image元件的時候,隻需要事先搞懂它的屬性,使用起來就很友善了(官方指定的全部Image屬性,都在這裡):
3、使用
3.1 上傳資源
在使用Image元件之前,需要知道HarmonyOS的應用程式結構中,圖檔資源的存放位置。 我們建立一個項目之後,打開項目的entry > src > main > resources > base > media目錄,這個下面會有一張預設的icon.png圖檔。這裡就是圖檔指定存放位置了。
3.2 代碼中使用
HarmonyOS的Java語義開發中,元件可以通過XML配置和Java代碼直接建構,這裡兩種方式都示範一下。
3.2.1 XML建立Image
在src -> main -> resources -> base -> layout -> ability_main.xml中實作如下代碼:
3.2.2 Java代碼建立Image
注釋掉XML中配置的Image,我們改用Java代碼實作。 在com.liziba.image.slice.MainAbilitySlice類的onStart方法中,建立Image代碼如下:
package com.liziba.image.slice;
import com.liziba.image.ResourceTable;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.DirectionalLayout;
import ohos.agp.components.Image;
public class MainAbilitySlice extends AbilitySlice {
@Override
public void onStart(Intent intent) {
super.onStart(intent);
//建立一個Image元件
Image image = new Image(getContext());
image.setPixelMap(ResourceTable.Media_JamesGosling);
image.setHeight(500);
image.setWidth(500);
image.setScaleMode(Image.ScaleMode.STRETCH);
//建立一個布局
DirectionalLayout layout = new DirectionalLayout(getContext());
//Image元件添加到DirectionalLayout布局中
layout.addComponent(image);
super.setUIContent(layout);
}
@Override
public void onActive() {
super.onActive();
}
@Override
public void onForeground(Intent intent) {
super.onForeground(intent);
}
}
由于在實際開發中,XML配置UI的還是多一些,因為友善改動和統一管理,也更加靈活。是以屬性這裡,都用XML配置來示範啦!!!
3.3.1 透明度
設定透明度為0.2,透明度設定的越小,圖檔越透明,原圖透明度為1。
ohos:alpha="0.2"3.3.2 縮放系數
當我們給定的圖檔大小和Image元件設定的大小不一緻的時候,我們往往需要通過縮放來實作相容。(但是為了圖檔不失真,最後還是少用縮放,圖檔大小不符合盡量找美工做一張新的圖檔。)
縮放系數可設定X軸和Y軸方向兩個參數,其實就是寬、高
如下是縮放x和y軸都配置0.5的效果
ohos:scale_x="0.5"
ohos:scale_y="0.5"
如下是配置為1的效果,預設為1,可以不配置:
ohos:scale_x="1"
ohos:scale_y="1"
能不能配置為比1大的數呢?當然是可以的,這樣會更加配置的縮放參數,進行放大。 比如配置一個2試試:
ohos:scale_x="2"
ohos:scale_y="2"
3.3.3 裁剪
如果給定的圖檔太大了,超過了我們的Image設定的大小,那該怎麼辦呢? 這個時候我們可以使用裁剪,裁剪有下面這些參數,隻示範一個吧!
3.3.4 縮放
當圖檔和Image元件的大小不同的時候,我們可以通過縮放的形式來自行适配。 比如我們此時設定的Image元件大小寬高均為200vp,但是圖檔的肯定沒得這麼大,是以我們可以考慮放大圖檔,讓圖檔放大到Image元件的大小即可。
我們采用stretch,将原圖縮放到與Image大小一緻。
ohos:scale_mode="stretch"