harmonyos developer,HarmonyOS 基本控件的实现
感謝關(guān)注harmonyos,為了便于大家學(xué)習(xí)特將鴻蒙2.0基礎(chǔ)教學(xué)內(nèi)容整理如下:
以下為harmonyos應(yīng)用開發(fā)—基本控件節(jié)選部分,如想進(jìn)一步了解,請點(diǎn)擊:harmonyos應(yīng)用開發(fā)—基本控件
harmonyos應(yīng)用開發(fā)-基本控件
1、介紹
您將建立什么
在這個(gè)codelab中,你將創(chuàng)建demo project,并將demo編譯成hap,此示例應(yīng)用程序展示了如何使用輕量級偏好數(shù)據(jù)庫。
您將會學(xué)到什么
如何創(chuàng)建一個(gè)harmonyos demo project
如何構(gòu)建一個(gè)hap并且將其部署到智慧屏真機(jī)
通過此示例應(yīng)用體驗(yàn)如何使用輕量級偏好數(shù)據(jù)庫
2. 您需要什么
硬件要求
操作系統(tǒng):windows10 64位
內(nèi)存:8g及以上。
硬盤:100g及以上。
分辨率:1280*800及以上
軟件要求
deveco studio:需手動下載安裝,詳細(xì)步驟請參考《deveco studio使用指南》2.1.2
jdk:deveco studio自動安裝。
node.js:請手動下載安裝,詳細(xì)步驟請參考《deveco studio使用指南》2.1.3 下載和安裝node.js。
harmonyos sdk:待deveco studio安裝完成后,利用deveco studio來加載harmonyos sdk。詳細(xì)步驟請參考《deveco studio使用指南》2.1.6 加載harmonyos sdk。
maven庫依賴包:如需手動拷貝和配置,詳細(xì)步驟請參考《deveco studio使用指南》2.3 離線方式配置maven庫。
需要的知識點(diǎn)
java基礎(chǔ)開發(fā)能力。
3. 能力接入準(zhǔn)備
實(shí)現(xiàn)harmonyos應(yīng)用開發(fā),需要完成以下準(zhǔn)備工作:
環(huán)境準(zhǔn)備。
環(huán)境搭建。
創(chuàng)建項(xiàng)目
申請調(diào)試證書
應(yīng)用開發(fā)
具體操作,請按照《deveco studio使用指南》中詳細(xì)說明來完成。
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數(shù)據(jù)", new rgbcolor(0, 0, 255), 1002);
readbtn = createbtn("讀取preferences數(shù)據(jù)", 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. 響應(yīng)遙控器點(diǎn)擊
在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實(shí)例注冊觀察者
counter = new preferenceschangecounter();
preferences.registerobserver(counter);
} else {
addobserver.settext("注冊觀察者");
// 向preferences實(shí)例注銷觀察者
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.編譯運(yùn)行該應(yīng)用
通過hdc連接大屏設(shè)備
先查看智慧屏ip:大屏設(shè)置->"網(wǎng)絡(luò)與連接"->"網(wǎng)絡(luò)"->"有線網(wǎng)絡(luò)"
在cmd或者ide的terminal輸入命令:
hdc tconn 192.168.3.9:5555
運(yùn)行hap
提示:需要通過注冊成開發(fā)者才能完成集成準(zhǔn)備中的操作。
干得好
你已經(jīng)成功完成了harmonyos應(yīng)用開發(fā)e2e體驗(yàn),學(xué)到了:
如何創(chuàng)建一個(gè)harmonyos demo project
如何構(gòu)建一個(gè)hap并且將其部署到真機(jī)上
在harmonyos上如何使用harmonyos的輕量級偏好數(shù)據(jù)庫
到此這篇關(guān)于harmonyos應(yīng) 基本控件的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)harmonyos應(yīng) 基本控件內(nèi)容請搜索萬仟網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持萬仟網(wǎng)!
總結(jié)
以上是生活随笔為你收集整理的harmonyos developer,HarmonyOS 基本控件的实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python基础代码技巧_Python
- 下一篇: 水系图一般在哪里找得到_进展 | 水系钠