harmonyos demo应用开发,HarmonyOS应用开发-应用偏好数据读写

1、介绍

本篇将实现的内容

HarmonyOS是面向全场景多终端的分布式操做系统,使得应用程序的开发打破了智能终端互通的性能和数据壁垒,业务逻辑原子化开发,适配多端。经过一个简单应用开发,体验HarmonyOS的轻量级偏好数据库能力html

您将创建什么

在这个Codelab中,你将建立Demo Project,并将Demo编译成Hap,此示例应用程序展现了如何使用轻量级偏好数据库。web

您将会学到什么数据库

如何建立一个HarmonyOS Demo Project

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

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

2、您须要什么

1. 硬件要求

操做系统:Windows10 64位

内存:8G及以上

硬盘:100G及以上

分辨率:1280*800及以上

2. 软件要求

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库。

3. 须要的知识点

Java基础开发能力。网络

3、能力接入准备

实现HarmonyOS应用开发,须要完成如下准备工做:分布式

环境准备。

环境搭建。

建立项目

申请调试证书

应用开发

具体操做,请按照《DevEco Studio使用指南》中详细说明来完成。

提示:须要经过注册成开发者才能完成集成准备中的操做。ide

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;

}

Preferences使用

Preferences初始化:svg

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);

2. 响应遥控器点击:

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;

}

3. 编译运行该应用

经过hdc链接大屏设备

先查看智慧屏IP:

大屏设置->"网络与链接"->"网络"->"有线网络"

在cmd或者IDE的Terminal输入命令:

hdc tconn 192.168.3.9:5555

运行hap

c0a3a244ba87f2e3d022c2561d09654d.png

5、恭喜你

干得好,你已经成功完成了HarmonyOS应用开发E2E体验,学到了:

如何建立一个HarmonyOS Demo Project

如何构建一个Hap而且将其部署到真机上在HarmonyOS上如何使用

HarmonyOS的轻量级偏好数据库

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值