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
提示:需要通過注冊成開發者才能完成集成準備中的操作。
干得好
你已經成功完成了harmonyos應用開發e2e體驗,學到了:
如何創建一個harmonyos demo project
如何構建一個hap并且將其部署到真機上
在harmonyos上如何使用harmonyos的輕量級偏好數據庫
到此這篇關于harmonyos應 基本控件的實現的文章就介紹到這了,更多相關harmonyos應 基本控件內容請搜索萬仟網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持萬仟網!
總結
以上是生活随笔為你收集整理的harmonyos developer,HarmonyOS 基本控件的实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python基础代码技巧_Python
- 下一篇: 水系图一般在哪里找得到_进展 | 水系钠