本文使用的是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);
}
}
}