天天看點

Java之父詹姆斯·高斯林 (James Gosling)學鴻蒙(HarmonyOS),HarmonyOS(鴻蒙)——Image元件詳述

 本文已收錄于專欄

❤️《鴻蒙開發》❤️

歡迎各位關注、三連部落客的文章及專欄,每周定期更新1-5篇基礎文章,共勉!

1、簡介

Image是用來顯示圖檔的元件,我們在開發中使用的非常頻繁!

2、屬性表

Image也是元件,它繼承自:ohos.agp.components.Component

我們在使用Image元件的時候,隻需要事先搞懂它的屬性,使用起來就很友善了(官方指定的全部Image屬性,都在這裡):

Java之父詹姆斯·高斯林 (James Gosling)學鴻蒙(HarmonyOS),HarmonyOS(鴻蒙)——Image元件詳述

3、使用

3.1 上傳資源

在使用Image元件之前,需要知道HarmonyOS的應用程式結構中,圖檔資源的存放位置。 我們建立一個項目之後,打開項目的entry > src > main > resources > base > media目錄,這個下面會有一張預設的icon.png圖檔。這裡就是圖檔指定存放位置了。

Java之父詹姆斯·高斯林 (James Gosling)學鴻蒙(HarmonyOS),HarmonyOS(鴻蒙)——Image元件詳述
Java之父詹姆斯·高斯林 (James Gosling)學鴻蒙(HarmonyOS),HarmonyOS(鴻蒙)——Image元件詳述

3.2 代碼中使用

HarmonyOS的Java語義開發中,元件可以通過XML配置和Java代碼直接建構,這裡兩種方式都示範一下。

3.2.1 XML建立Image

在src -> main -> resources -> base -> layout -> ability_main.xml中實作如下代碼:

Java之父詹姆斯·高斯林 (James Gosling)學鴻蒙(HarmonyOS),HarmonyOS(鴻蒙)——Image元件詳述
Java之父詹姆斯·高斯林 (James Gosling)學鴻蒙(HarmonyOS),HarmonyOS(鴻蒙)——Image元件詳述

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);
    }
}      
Java之父詹姆斯·高斯林 (James Gosling)學鴻蒙(HarmonyOS),HarmonyOS(鴻蒙)——Image元件詳述

由于在實際開發中,XML配置UI的還是多一些,因為友善改動和統一管理,也更加靈活。是以屬性這裡,都用XML配置來示範啦!!!

3.3.1 透明度

設定透明度為0.2,透明度設定的越小,圖檔越透明,原圖透明度為1。

ohos:alpha="0.2"
Java之父詹姆斯·高斯林 (James Gosling)學鴻蒙(HarmonyOS),HarmonyOS(鴻蒙)——Image元件詳述

3.3.2 縮放系數

當我們給定的圖檔大小和Image元件設定的大小不一緻的時候,我們往往需要通過縮放來實作相容。(但是為了圖檔不失真,最後還是少用縮放,圖檔大小不符合盡量找美工做一張新的圖檔。)

縮放系數可設定X軸和Y軸方向兩個參數,其實就是寬、高

如下是縮放x和y軸都配置0.5的效果
ohos:scale_x="0.5"
ohos:scale_y="0.5"
Java之父詹姆斯·高斯林 (James Gosling)學鴻蒙(HarmonyOS),HarmonyOS(鴻蒙)——Image元件詳述

如下是配置為1的效果,預設為1,可以不配置:

ohos:scale_x="1"

ohos:scale_y="1"

Java之父詹姆斯·高斯林 (James Gosling)學鴻蒙(HarmonyOS),HarmonyOS(鴻蒙)——Image元件詳述
能不能配置為比1大的數呢?當然是可以的,這樣會更加配置的縮放參數,進行放大。 比如配置一個2試試:

ohos:scale_x="2"

ohos:scale_y="2"

Java之父詹姆斯·高斯林 (James Gosling)學鴻蒙(HarmonyOS),HarmonyOS(鴻蒙)——Image元件詳述
3.3.3 裁剪
如果給定的圖檔太大了,超過了我們的Image設定的大小,那該怎麼辦呢? 這個時候我們可以使用裁剪,裁剪有下面這些參數,隻示範一個吧!
Java之父詹姆斯·高斯林 (James Gosling)學鴻蒙(HarmonyOS),HarmonyOS(鴻蒙)——Image元件詳述
Java之父詹姆斯·高斯林 (James Gosling)學鴻蒙(HarmonyOS),HarmonyOS(鴻蒙)——Image元件詳述
3.3.4 縮放
當圖檔和Image元件的大小不同的時候,我們可以通過縮放的形式來自行适配。 比如我們此時設定的Image元件大小寬高均為200vp,但是圖檔的肯定沒得這麼大,是以我們可以考慮放大圖檔,讓圖檔放大到Image元件的大小即可。
我們采用stretch,将原圖縮放到與Image大小一緻。
ohos:scale_mode="stretch"
Java之父詹姆斯·高斯林 (James Gosling)學鴻蒙(HarmonyOS),HarmonyOS(鴻蒙)——Image元件詳述