1.组件
页面所展示出来的文本框,按钮等展示的元素都是组件。
注意:组件在未被添加到布局中时,既无法显示也无法交互,因此一个用户界面至少要包含一个布局。
如:按钮组件、图片组件、文本框组件、文本输入框组件、进度条组件,音量滑块组件,单选框组件。
分类:显示类组件(图片组件,文本组件,进度条组件等)、交互类组件(按钮组件,输入框组件,多选框组件,单选框组件,滑块组件等)、布局是容器类的组件
父类:Component(包括布局)
1.1显示类组件
1.1.1文本组件(text)
常见属性说明:


特别说明属性值说明:
宽高属性
match_content 包裹内容
match_parent 填充父元素
或者具体数值单位
3.1 px(像素):固定的
3.2 vp(虚拟像素):宽高
vp = (px160)/PPI:
PPI:屏幕像素点密度(Pixels Per Inch):对角线像素点个数/屏幕尺寸:每英寸有多少个像素点.
例:假如要在布局上设置width为100px的组件,则vp=(100px160)/PPI3.3 fp (像素):文字大小

- 颜色属性:
- 三元色:[透明度]红绿蓝
- 范围:0~255
- 表示方法:十六进制(#00917643)注:两两一样时可以省略为一个
- 位置属性
- 边距
1.1 外边距(margin、top_margin、bottom_margin、left_margin、right_margin)
组件边框外侧距离其他组件的距离。
如果组件外侧没有其他组件,则是到父布局的距离。
1.2. 内边距(padding、top_padding、botton_padding、left_padding、right_padding)
组件边框的内侧和文本之间的间距。
一般设置上左就行了。
- 展示大段文字
- 文字过长自动换行
ohos:multiple_lines=”true”(自动换行)
ohos:max_text_lines=”1” (文本最大行数) - 文字过长省略开头
ohos:truncation_mode=”ellipsis_at_start” - 文字过长省略结尾
ohos:truncation_mode=”ellipsis_at_end” - 文字过长省略中间
ohos:truncation_mode=”ellipsis_at_middle” - 跑马灯效果
ohos:truncation_mode=”auto_scrolling”(文本允许自动滚动)
ohos:auto_scrolling_count=”unlimited”(滚动次数)
ohos:auto_scrolling_duration=”2000”(滚动速度)
text.startAutoScrolling();(开启跑马灯效果)1.1.2图片组件(Image)
属性介绍:
background_element(背景图片)
image_src(展示图片|前景图片)
clip_alignment(裁剪方式)
scale_mode(缩放模式)
2.布局
多个组件摆放的方式就是布局,组件必须添加到布局中才能够显示出来。
3.事件
就是可以被组件识别的操作。
常见的事件:单机、双击、长按、滑动
3.1单击事件
单击事件又叫做点击事件。是开发中使用最多的一种事件没有之一。
实现步骤:
- 通过id找到组件
- 给按钮组件设置单击事件
- 写一个类实现clickedListener接口并重写onClick方法
- 编写onclick方法体
四种方式:
- 匿名内部类
1
2
3
4
5
6
7
8
9
10
11
12
13button = (Button) this.findComponentById(ResourceTable.Id_btn1);
//this:本类的对象。子界面对象。
//用this调用方法,this可以省略不写
//返回的是一个组件父类对象需要向下转型。
// 为按钮设置点击事件回调
button.setClickedListener(new Component.ClickedListener() {
@Override
public void onClick(Component component) {
// 此处添加点击按钮后的事件处理逻辑
//Componet:所有组件的父类
button.setText("已点击");
}
}); - 自定义实现类
1
2
3
4
5
6
7
8class MyListener implements Component.ClickedListener{
@Override
public void onClick(Component component) {
Button button= (Button) component;
button.setText("已点击");
}
} - 当前类做实现类
1 | package com.example.myfirstapplication.slice; |
- 方法引用
1
2
3
4
5
6
7
8
9
10button = (Button) findComponentById(ResourceTable.Id_btn1);
//方法引用
button.setClickedListener(this::onclick);
//注意返回值类型以及形参类型
public void onclick(Component component) {
Button button = (Button) component;
button.setText("已点击");
}
3.2双击事件
1 | button.setDoubleClickedListener(this::onDoubleClick); |
3.3长按事件
1 | //方法引用 |
3.4滑动事件
包括三个动作:按下不松(按下位置),移动,松开(松开位置)
1 | public class FouthAbilitySlice extends AbilitySlice { |
上下左右滑动松开时滑动方式检测
1 | //获取按下时手指的位置(坐标) |
public boolean onTouchEvent(Component component, TouchEvent touchEvent)
如果返回值为true,表示所有的动作都会触发当前方法并且执行对应的代码。
如果返回值为false,表示只有第一个动作会出发当前方法并执行对应代码。后续的动作就不会触发当前方法了。(按下–移动-松开只有按下时会触发一次。)