鸿蒙openharmony开发 (鸿蒙开发自定义布局)

关键步骤及代码

一、新建布局文件并添加文本框

鸿蒙开发自定义布局,鸿蒙harmony2.0开发实战

新建布局文件

<Text
        ohos:height="match_content"
        ohos:width="match_content"
        ohos:id="$+id:CustomToastText"
        ohos:padding="10fp"
        ohos:layout_alignment="center"
        ohos:text_size="16fp"
        ohos:text_color="#fff"
        ohos:text="吐司文字"
        ohos:background_element="$graphic:background_toast"></Text>

二、新建Java类并录入以下关键代码

鸿蒙开发自定义布局,鸿蒙harmony2.0开发实战

新建JAVA类

Component component;
Text CustomToastText;
public ToastSample() {
    super();
}
public void SampleToast(Context context,String Toast_Text,int gravity,int x,int y,int ms){
    component= LayoutScatter.getInstance(context).parse(ResourceTable.Layout_tost_layout,null,false);
    CustomToastText=(Text) component.findComponentById(ResourceTable.Id_CustomToastText);
    CustomToastText.setText(Toast_Text);
    ToastDialog toastDialog=new ToastDialog(context);
    toastDialog.setComponent(component);
    //toastDialog.setCornerRadius(30);
    toastDialog.setAlignment(gravity);
    toastDialog.setOffset(x,y);
    toastDialog.setDuration(ms);
    toastDialog.show();
}

知识点

  1. LayoutScatter:布局散点图
  2. getInstance:获取实例
  3. parse:解析

三、Ability布局添加按钮

鸿蒙开发自定义布局,鸿蒙harmony2.0开发实战

打开Ability布局文件

<Button
    ohos:top_margin="10fp"
    ohos:left_margin="20fp"
    ohos:right_margin="20fp"
    ohos:height="match_content"
    ohos:width="match_parent"
    ohos:id="$+id:OpenToast"
    ohos:text="$string:button_name"
    ohos:text_color="#fff"
    ohos:text_size="20fp"
    ohos:top_padding="10fp"
    ohos:background_element="$graphic:background_button"
    ohos:bottom_padding="10fp" />

四、切片文件录入以下关键代码

鸿蒙开发自定义布局,鸿蒙harmony2.0开发实战

打开切片文件

public void onStart(Intent intent) {
    super.onStart(intent);
    super.setUIContent(ResourceTable.Layout_ability_main);
    Button OpenToast=(Button) findComponentById(ResourceTable.Id_OpenToast);
    OpenToast.setClickedListener(clickedListener);
}
public Component.ClickedListener clickedListener= component -> {
    switch (component.getId()){
        case ResourceTable.Id_OpenToast:
            LoadSampleToast();
            break;
        default:
            break;
    }
};
public void LoadSampleToast(){
    TaskDispatcher taskDispatcher=this.getUITaskDispatcher();
    taskDispatcher.asyncDispatch(() -> {
        ToastSample toastSample=new ToastSample();
        toastSample.SampleToast(this,"*今条头日**赚点小钱", LayoutAlignment.CENTER,0,0,2000);
    });
}

五、打开鸿蒙手机模拟器运行

鸿蒙开发自定义布局,鸿蒙harmony2.0开发实战

运行效果