harmonyos developer,HarmonyOS 基本控件的实现

感谢关注harmonyos,为了便于大家学习特将鸿蒙2.0基础教学内容整理如下:

以下为harmonyos应用开发—基本控件节选部分,如想进一步了解,请点击:harmonyos应用开发—基本控件

harmonyos应用开发-基本控件

1、介绍

您将建立什么

在这个codelab中,你将创建demo project,并将demo编译成hap,此示例应用程序展示了如何使用轻量级偏好数据库。

您将会学到什么

如何创建一个harmonyos demo project

如何构建一个hap并且将其部署到智慧屏真机

通过此示例应用体验如何使用轻量级偏好数据库

2. 您需要什么

硬件要求

操作系统:windows10 64位

内存:8g及以上。

硬盘:100g及以上。

分辨率:1280*800及以上

软件要求

deveco studio:需手动下载安装,详细步骤请参考《deveco studio使用指南》2.1.2

jdk:deveco studio自动安装。

node.js:请手动下载安装,详细步骤请参考《deveco studio使用指南》2.1.3 下载和安装node.js。

harmonyos sdk:待deveco studio安装完成后,利用deveco studio来加载harmonyos sdk。详细步骤请参考《deveco studio使用指南》2.1.6 加载harmonyos sdk。

maven库依赖包:如需手动拷贝和配置,详细步骤请参考《deveco studio使用指南》2.3 离线方式配置maven库。

需要的知识点

java基础开发能力。

3. 能力接入准备

实现harmonyos应用开发,需要完成以下准备工作:

环境准备。

环境搭建。

创建项目

申请调试证书

应用开发

具体操作,请按照《deveco studio使用指南》中详细说明来完成。

4. 代码片段

1. 布局:

布局代码:

layoutconfig config = new layoutconfig(layoutconfig.match_parent, layoutconfig.match_parent);

mylayout.setlayoutconfig(config);

mylayout.setorientation(component.vertical);

shapeelement element = new shapeelement();

element.setrgbcolor(new rgbcolor(255, 255, 255));

mylayout.setbackground(element);

log = createtext("日志信息");

mylayout.addcomponent(log);

writebtn = createbtn("写入preferences数据", new rgbcolor(0, 0, 255), 1002);

readbtn = createbtn("读取preferences数据", new rgbcolor(0, 0, 255), 1003);

addobserver = createbtn("注册观察者", new rgbcolor(255, 0, 0), 1004);

private text createtext(string title) {

text text = new text(this);

directionallayout.layoutconfig config = new directionallayout.layoutconfig(directionallayout.layoutconfig.match_content, directionallayout.layoutconfig.match_content);

text.setlayoutconfig(config);

text.settext(title);

text.settextsize(48);

text.settextcolor(new color(0xff0000ff));

return text;

}

private button createbtn(string title, rgbcolor color, int id) {

button btn = new button(this);

layoutconfig configbtn = new layoutconfig(500, 100);

configbtn.topmargin = 30;

btn.setlayoutconfig(configbtn);

btn.settext(title);

btn.setid(id);

btn.settextsize(48);

btn.settextcolor(new color(0xffffffff));

shapeelement elementbtn = new shapeelement();

elementbtn.setrgbcolor(color);

elementbtn.setcornerradius(12);

btn.setbackground(elementbtn);

mylayout.addcomponent(btn);

return btn;

}

2. preferences使用:

preferences初始化

private void initpreferences() {

databasehelper databasehelper = new databasehelper(this);

string filename = "user_info";

preferences = databasehelper.getpreferences(filename);

}

写文件:

preferences.putint("age", integer.parseint(age.gettext()));

preferences.putstring("name", name.gettext());

preferences.flushsync();

读文件:

int age = preferences.getint("age", 0);

string name = preferences.getstring("name", "");

toastdialog toastdialog = new toastdialog(preferencesabilityslice.this);

toastdialog.settext("read user data frome preferences name:" + name + ", age:" + age);

toastdialog.show();

观察者:

注册:

counter = new preferenceschangecounter();

preferences.registerobserver(counter);

private class preferenceschangecounter implements preferences.preferencesobserver {

@override

public void onchange(preferences preferences, string key) {

if ("name".equals(key)) {

string name = preferences.getstring("name", "");

log.settext("user data name is edit:" + name);

}

if ("age".equals(key)) {

int age = preferences.getint("age", 0);

log.settext("user data age is edit:" + age);

}

}

}

删除:

preferences.unregisterobserver(counter);

3. 响应遥控器点击

在zh-cn.json文件中写入:

private void addfocuschangedlistener(component view) {

view.setfocuschangedlistener(new component.focuschangedlistener() {

@override

public void onfocuschange(component component, boolean b) {

shapeelement shapeelement = (shapeelement) view.getbackgroundelement();

if (b) {

shapeelement.setstroke(10, new rgbcolor(0, 0, 0));

focusview = view;

} else {

shapeelement.setstroke(0, new rgbcolor(0, 0, 0));

}

}

});

}

@override

public boolean onkeyup(int keycode, keyevent keyevent) {

switch (keycode) {

case keyevent.key_dpad_center:

case keyevent.key_enter:

if(focusview == writebtn) {

preferences.putint("age", index++);

preferences.putstring("name", "张三");

preferences.flushsync();

}

if(focusview == readbtn) {

int age = preferences.getint("age", 0);

string name = preferences.getstring("name", "");

log.settext("read user data frome preferences name:" + name + ", age:" + age);

}

if(focusview == addobserver) {

if (addobserver.gettext().equals("注册观察者")) {

addobserver.settext("删除观察者");

// 向preferences实例注册观察者

counter = new preferenceschangecounter();

preferences.registerobserver(counter);

} else {

addobserver.settext("注册观察者");

// 向preferences实例注销观察者

preferences.unregisterobserver(counter);

}

}

return true;

case keyevent.key_dpad_up:

int position = views.indexof(focusview.getid());

if (position > 0) {

switch (position) {

case 1:

writebtn.requestfocus();

break;

case 2:

readbtn.requestfocus();

break;

default:

break;

}

}

return true;

case keyevent.key_dpad_down:

position = views.indexof(focusview.getid());

if (position < 3) {

switch (position) {

case 0:

readbtn.requestfocus();

break;

case 1:

addobserver.requestfocus();

break;

default:

break;

}

}

return true;

}

return false;

}

4.编译运行该应用

通过hdc连接大屏设备

先查看智慧屏ip:大屏设置->"网络与连接"->"网络"->"有线网络"

在cmd或者ide的terminal输入命令:

hdc tconn 192.168.3.9:5555

运行hap

c457539f5cb20475d9927583ec515fc7.png

提示:需要通过注册成开发者才能完成集成准备中的操作。

干得好

你已经成功完成了harmonyos应用开发e2e体验,学到了:

如何创建一个harmonyos demo project

如何构建一个hap并且将其部署到真机上

在harmonyos上如何使用harmonyos的轻量级偏好数据库

到此这篇关于harmonyos应 基本控件的实现的文章就介绍到这了,更多相关harmonyos应 基本控件内容请搜索萬仟网以前的文章或继续浏览下面的相关文章希望大家以后多多支持萬仟网!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值