DevEco xml与Java布局的分别使用(笔记)

本文使用的是JAVA开发模式,而不是JS+JAVA的模式

一、布局方式

1.xml文件:标签表示要展示内容

2.Java代码:对象表示要展示的内容、

(如果过是js开发,就可按照类似HTML的方式编写)

现我们要为页面添加按钮然后让其跳转

二、页面的布局

xml布局

第一个页面我们就用xml

找到

默认竖直布局 

添加如下代码

(其中match_content是使得与内容同宽)

   <Button
        ohos:id="$+id:but1"
        ohos:height="match_content"
        ohos:width="match_content"
        ohos:background_element="red"
        ohos:text_size="40fp"
        ohos:text="click"/>

Java布局

随后创建一个新的页面(Java编写)

如果勾选了,该页面会为程序启动第一个执行界面

由于我们使用Java,因此可以将对应的xml删除

 同时注释掉该句

 接下来类似于Java的图形界面开发。笔者认为可以用Java中的stage理解。

package com.example.myapplication.slice;

import com.example.myapplication.ResourceTable;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.DirectionalLayout;
import ohos.agp.components.Text;
import ohos.agp.utils.Color;

public class MainAbility2Slice extends AbilitySlice {
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        //super.setUIContent(ResourceTable.Layout_ability_main2);
        //1,布局对象
        //为当前舞台添加布局对象
        DirectionalLayout d1 = new DirectionalLayout( this);
        //2.文本对象
        //为当前舞台添加文本对象
        Text t= new Text(this);
        //设置内容
        t.setText("第二个页面");
        //设置字体大小
        t.setTextSize(55);
        //设置字体颜色
        t.setTextColor(Color.BLUE);
        //3.将文本对象放入布局
        d1.addComponent(t);
        //4.把布局放入舞台
        super.setUIContent(d1);
    }

    @Override
    public void onActive() {
        super.onActive();
    }

    @Override
    public void onForeground(Intent intent) {
        super.onForeground(intent);
    }
}

 实现跳转

为第一个页面的Slice编写如下代码

package com.example.myapplication.slice;

import com.example.myapplication.ResourceTable;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.aafwk.content.Operation;
import ohos.agp.components.Button;
import ohos.agp.components.Component;
public class MainAbilitySlice extends AbilitySlice implements Component.ClickedListener{
    Button btu;//作为MainAbilitySlice的成员变量,而不是一个方法的变量
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_main);
        //1.找到id
        btu = (Button)findComponentById(ResourceTable.Id_but1);
        //2.添加点击事件
        //由于本类实现了ClickedListener,因此可以直接传入
        btu.setClickedListener(this);
    }

    @Override
    public void onActive() {
        super.onActive();
    }

    @Override
    public void onForeground(Intent intent) {
        super.onForeground(intent);
    }

    @Override
    public void onClick(Component component) {
        //为避免有多个按钮,因此需要判断是哪个按钮被按下
        if(component == btu){
            //创建意图对象,你想跳转到哪里
            //包含了,跳转信息
            Intent i = new Intent();
            //OperationBuilder操作创建
            Operation operation = new Intent.OperationBuilder()
                    //信息都可以在config里面查到(name)
                    //withDeviceId:要跳转到哪个设备,无内容字符串,表示跳转本机(万物互联)
                    .withDeviceId("")
                    //withBundleName 要跳转到哪个应用上,下括号可以写本应用
                    .withBundleName("com.example.myapplication")
                    //要跳转到哪个页面上
                    .withAbilityName("com.example.myapplication.MainAbility2")
                    //将上面信息打包(构建)
                    .build();
            //将打包信息设置到意图里面
            i.setOperation(operation);
            //启动能力(跳转页面)
            startAbility(i);
        }

    }
}

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值