成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

據(jù)說,90%以上的開發(fā)者都想知道這些問題的答案

開發(fā) 前端
本期我們將為大家?guī)黹_發(fā)者呼聲最高的16個問題答疑,涵蓋FA開發(fā)和UI組件,有原理有代碼,讓你快速get到解決方案。

[[420942]]

想了解更多內(nèi)容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

在開發(fā)HarmonyOS應(yīng)用時,你是否也遇到過翻遍資料也找不到答案的困擾?

沒關(guān)系,本期我們將為大家?guī)黹_發(fā)者呼聲最高的16個問題答疑,涵蓋FA開發(fā)和UI組件,有原理有代碼,讓你快速get到解決方案。

趕緊往下看,一起來學(xué)習(xí)學(xué)習(xí)吧~

一、FA開發(fā)篇

Q1:在JS開發(fā)中,一個文件如何使用定義在其他文件中的變量?

A: 在開發(fā)過程中,有時候為了代碼清晰,會新建一個文件,定義一個變量,把某個數(shù)據(jù)很大的常量數(shù)組獨立到該新建文件中,其他文件有需要的時候可以使用到該數(shù)據(jù)。那么究竟應(yīng)該如何使用?

舉個例子,我們新建一個data.js的文件,定義一個data1的變量存儲數(shù)據(jù)。

若我們需要使用到data.js中的data1變量,首先需要將data1變量導(dǎo)出:

在data.js文件末尾加上如下代碼:

  1. export {  
  2.     data1  

 接著在需要使用該數(shù)據(jù)的文件頭中導(dǎo)入data.js文件,假設(shè)此時是user.js需要使用data1數(shù)據(jù),那么我們在user.js的文件頭中導(dǎo)入data.js文件,代碼如下:

  1. import data from '../../common/js/data.js' 

 在user.js文件中使用data.data1就可使用data1變量了。

Q2:在JS開發(fā)中,如何控制塊元素的橫縱向排列?

A: 如果想在JS中實現(xiàn)塊元素的縱向排列,需要給父元素設(shè)置flex-direction:column;如果想在JS中實現(xiàn)塊元素的橫向排列,需要給父元素設(shè)置flex-direction:row。通常容器組件flex-direction樣式的缺省值為row,即默認為橫向排列。

Q3:在JS開發(fā)中,如何控制一個元素顯示或隱藏?

A: 在JS中,如果想要動態(tài)控制某個元素的顯示或隱藏,可以為元素添加show屬性,并為這個屬性綁定js變量;若將變量值設(shè)為true,即可控制元素顯示,設(shè)為false,則控制元素隱藏,示例代碼如下:

  1. <div class="container" show="{{flag}}"

Q4:為什么export的JS模塊在別的JS文件中import時,會出現(xiàn)修改不生效的情況呢?

A: 在JS開發(fā)中,開發(fā)者可能會遇到這樣的情況,某個變量在模塊1中,被模塊2 import并使用了,但是修改模塊1中的這個變量,模塊2中并沒有生效這個修改的情況。這是由于HarmonyOS JS UI框架的import是靜態(tài)import,即編譯過程會把互相依賴的文件合并以提高運行效率。如果一個JS模塊被多個文件import,則會在不同的文件中分別生成變量。

如果是要共享使用某個變量,使之變化在各模塊中都能生效,建議在app.js里聲明變量,并通過**getApp()**全局方法去獲取該對象。

Q5:FA卡片如何動態(tài)更換圖片?

A: 開發(fā)者可以通過調(diào)用setImageContent接口實現(xiàn)FA卡片圖片的動態(tài)更換。但使用setImageContent接口設(shè)置圖片時,涉及到資源id,需要在/base/profile中新建remote.xml配置文件,內(nèi)容如下:

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <remoteresources>  
  3.     <item>$media:test</item>  
  4. </remoteresources> 

其中,test是需要設(shè)置的圖片名。

Q6:如何定位AbilitySlice展示耗時問題?

A: 當(dāng)開發(fā)者在開發(fā)自己的app的時候,如果發(fā)現(xiàn)頁面展示的比較慢,需要對耗時問題進行定位并針對性進行改進,HarmonyOS提供兩種方法幫助開發(fā)者完成該定位:

1.通過bytrace提供的接口進行打點跟蹤:

● 詳情請參考:

https://developer.harmonyos.com/cn/docs/documentation/doc-references/bytrace-0000001054679000

2.通過用于追蹤進程軌跡、分析性能的命令行工具——bytrace來實現(xiàn):

● 詳情請參考:

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ide-command-line-bytrace-0000001125636225

Q7 :HarmonyOS中如何讀取EXCEL中的數(shù)據(jù)?

A: 開發(fā)者可以參考以下步驟實現(xiàn):

1.在entry > build.gradle中添加如下依賴:

  1. dependencies {  
  2.     ……  
  3.     implementation group'org.jxls'name'jxls-jexcel', version: '1.0.9'  

 2.在entry > resources > base > media目錄下加入要讀取的EXCEL表格,注意EXCEL表格的后綴為xls。

3.在MainAbilitySlice.java中讀取EXCEL表格中的數(shù)據(jù),代碼如下:

  1. public class MainAbilitySlice extends AbilitySlice {  
  2.     private static final HiLogLabel TAG = new HiLogLabel(3, 0xD001100, "MainAbilitySlice");  
  3.  
  4.     @Override  
  5.     public void onStart(Intent intent) {  
  6.         super.onStart(intent);  
  7.         super.setUIContent(ResourceTable.Layout_ability_main);  
  8.  
  9.         // 處理EXCEL表格數(shù)據(jù)  
  10.         try {  
  11.             // 打開EXCEL文件  
  12.             Resource resource = getResourceManager()  
  13.                     .getRawFileEntry("entry/resources/base/media/excel.xls").openRawFile();  
  14.             Workbook wb = Workbook.getWorkbook(resource);  
  15.             int sheetSize = wb.getNumberOfSheets();  
  16.             if (sheetSize > 0) {  
  17.                 // 獲取EXCEL的第一個sheet  
  18.                 Sheet sheet = wb.getSheet(0);  
  19.                 int rowTotal = sheet.getRows();  
  20.                 // 遍歷單元格獲取數(shù)據(jù)  
  21.                 for (int i = 0; i < rowTotal; i++) {  
  22.                     Cell[] cells = sheet.getRow(i);  
  23.                     for (int j = 0; j < cells.length; j++) {  
  24.                         String content = cells[j].getContents();  
  25.                         HiLog.info(TAG, "content:" + content);  
  26.                     }  
  27.                 }  
  28.             }  
  29.         } catch (IOException | BiffException e) {  
  30.             HiLog.error(TAG, "exception");  
  31.         }  
  32.     }  

二、UI組件篇

Q1:如何在JS中給image組件切換圖源?

A: 將image組件中的src屬性用js中的變量綁定,如 src=“{{imageSrc}}”,當(dāng)需要更改圖源時,僅需在js文件中將這個js變量值變更即可,如 imageSrc=“/common/pic.png”。

Q2:如何在JS中實現(xiàn)文本超長時顯示省略號?

A: 開發(fā)者需要先為文本設(shè)置一個最大行數(shù),接著使用樣式text-overflow:ellipsis,在文本超出行數(shù)時,即會用省略號表示。

Q3:如何通過JS實現(xiàn)點擊input組件并實現(xiàn)打開鍵盤的效果?

A: 在**.hml中給input組件設(shè)置id值,并為其設(shè)置focusable="true"的屬性,在.js**中通過this.$element(“inputID”)取到input元素,然后調(diào)用focus方法即可,代碼示例如下:

.hml:

  1. <input id="box"  
  2. focusable="true"></input> 

.js:

  1. this.$element("box").focus({focus:true}) 

Q4:Switch組件如何設(shè)置thumb高度超出track?

A: Switch即開關(guān)選擇器,通過開關(guān),實現(xiàn)某個功能的開啟或關(guān)閉。但在用戶的實際使用中,可能出現(xiàn)由于手指不能完全對準(zhǔn)Switch組件導(dǎo)致無法實現(xiàn)開關(guān)控制的情況,原始效果如下:

據(jù)說,90%以上的開發(fā)者都想知道這些問題的答案-鴻蒙HarmonyOS技術(shù)社區(qū)

因此開發(fā)者的解決方案是設(shè)置組件滑動塊高出底層的高度或者滑動手柄的高度超出滑動軌跡的高度來增加用戶可控范圍。效果如下:

據(jù)說,90%以上的開發(fā)者都想知道這些問題的答案-鴻蒙HarmonyOS技術(shù)社區(qū)

可以看到藍色圈圈的高度是超出底層灰色的高度,實現(xiàn)這種效果的代碼如下:

  1. Switch testSwitch = (Switch) findComponentById(ResourceTable.Id_test_switch);  
  2. ShapeElement trackOn = new ShapeElement();  
  3. trackOn.setShape(ShapeElement.PATH);  
  4. trackOn.setRgbColor(RgbPalette.BLUE);  
  5. Path pathOn = new Path();  
  6. pathOn.addRoundRect(new RectFloat(0.0f, 10.0f, 200.0f, 90.0f), 40.0f, 40.0f, Path.Direction.CLOCK_WISE);  
  7. trackOn.setBounds(0, 0, 100, 200);  
  8. trackOn.setPath(pathOn);  
  9. ShapeElement trackOff = new ShapeElement();  
  10. trackOff.setShape(ShapeElement.PATH);  
  11. trackOff.setRgbColor(RgbPalette.GRAY);  
  12. Path pathOFF = new Path();  
  13. pathOFF.addRoundRect(new RectFloat(0.0f, 10.0f, 200.0f, 90.0f), 40.0f, 40.0f, Path.Direction.CLOCK_WISE);  
  14. trackOff.setBounds(0, 0, 100, 200);  
  15. trackOff.setPath(pathOFF);  
  16. StateElement stateElement = new StateElement();  
  17. stateElement.addState(new int[]{ComponentState.COMPONENT_STATE_CHECKED}, trackOn);  
  18. stateElement.addState(new int[]{ComponentState.COMPONENT_STATE_EMPTY}, trackOff);  

Q5:Java開發(fā)中,當(dāng)TextField組件底部對齊時,如何才能避免輸入內(nèi)容后組件被軟鍵盤遮擋?

A: 當(dāng)TextField組件被設(shè)計在底部時,開發(fā)者可以通過以下方法避免輸入內(nèi)容后TextField組件被軟鍵盤遮擋,步驟如下:

調(diào)用TextField父類Component中的setLayoutRefreshedListener方法進行組件布局刷新監(jiān)聽;

在回調(diào)中通過getWindowVisibleRect方法獲取組件可視矩形區(qū)域;

根據(jù)可視區(qū)域算出textField需要移動的距離,使textField不被軟件盤遮擋;

示例代碼如下:

  1. Component componentByIdLayout = findComponentById(ResourceTable.Id_directionlayout);  
  2. if (componentByIdLayout instanceof DirectionalLayout) {  
  3.     mLayout = (DirectionalLayout) componentByIdLayout;  
  4. }  
  5. Component componentByIdTextField = findComponentById(ResourceTable.Id_text_field);  
  6. if (componentByIdTextField instanceof TextField) {  
  7.     mTextField = (TextField) componentByIdTextField;  
  8. }  
  9. // 監(jiān)聽組件布局刷新 
  10. mLayout.setLayoutRefreshedListener(new Component.LayoutRefreshedListener() {  
  11.     @Override  
  12.     public void onRefreshed(Component component) {  
  13.         Rect rect = new Rect();  
  14.         // 獲取組件可視矩形區(qū)域 
  15.         boolean result = mTextField.getWindowVisibleRect(rect);  
  16.         if (!result) {  
  17.             HiLog.error(TAG, "getWindowVisibleRect fail");  
  18.             return;  
  19.         }  
  20.         if (mTempVisibleHeight == 0 || mTempVisibleHeight == rect.bottom) {  
  21.             mTempVisibleHeight = rect.bottom;  
  22.             return;  
  23.         }  
  24.         // 計算textField組件需要移動的距離 
  25.         int inputHeight = mTempVisibleHeight - rect.bottom;   
  26.         mTempVisibleHeight = rect.bottom;  
  27.         if (inputHeight > 0) {  
  28.             mTextField.setText("input method height is " + inputHeight);  
  29.             mTextField.setTranslationY(0 - inputHeight);  
  30.         }  
  31.         if (inputHeight < 0) {  
  32.             mTextField.setText("input method height is 0");  
  33.             mTextField.setTranslationY(0);  
  34.         }  
  35.     }  
  36. }); 

Q6:Java開發(fā)中,為什么TextField組件橫、豎屏?xí)r輸入樣式差別很大?

A: 當(dāng)TextField組件的width和height屬性設(shè)置為match_parent時,會根據(jù)屏幕寬高自動適配,故橫、豎屏?xí)r,TextField尺寸會發(fā)生改變,樣式差別很大。如果需要保持橫豎屏切換不改變TextField組件,開發(fā)者只需設(shè)置固定大小即可。

Q7:如何使應(yīng)用不支持多窗口特性?

A: 一般情況下,HarmonyOS默認應(yīng)用支持多窗口特性,若開發(fā)者不需要此支持,可以在config.json文件“module”節(jié)點下增加屬性標(biāo)識“resizeable”: false即可,該設(shè)置適用于手機、平板、智慧屏、車機、智能穿戴。

● 詳情請參考:

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/basic-config-file-elements-0000000000034463

Q8:Fraction如何在子線程中更新UI?

A: Fraction可以作為UI的一部分放在Ability或者AbilitySlice中,不能單獨使用。Fraction的生命周期狀態(tài)取決于它的容器。如果容器被銷毀,其中的所有部分也將被銷毀,開發(fā)者可以使用Fraction定義各種布局,以豐富應(yīng)用程序的用戶界面。開發(fā)者可以通過EventHandler的方式在子線程中更新UI,可參考如下代碼實現(xiàn):

  1. public class MeFraction extends Fraction {  
  2.     public void execute(Text text) {  
  3.         EventHandler handler = new EventHandler(EventRunner.current()) {  
  4.             // 重寫實現(xiàn)processEvent方法處理事件 
  5.             @Override  
  6.             protected void processEvent(InnerEvent event) {  
  7.                 super.processEvent(event);  
  8.                 if (event == null) {  
  9.                     return;  
  10.                 }  
  11.                 if (event.eventId == 100) {  
  12.                     text.setText("更新UI");  
  13.                 }  
  14.             }  
  15.         };  
  16.         // 創(chuàng)建子線程并通過EventHandler發(fā)送事件 
  17.         new Thread(() -> handler.sendEvent(InnerEvent.get(100))).start();  
  18.     }  

Q9:如何通過代碼實現(xiàn)橫幅展示消息功能?

A: 在Java開發(fā)中,要實現(xiàn)消息展示功能需要用到NotificationSlot功能集合,其控制包括通知音、振動、鎖屏顯示和級別。當(dāng)開發(fā)者將NotificationSlot的級別設(shè)置為LEVEL_HIGH,即可實現(xiàn)橫幅展示消息功能。

  1. NotificationSlot slot = new NotificationSlot("slot_001""slot_default", NotificationSlot.LEVEL_HIGH); 

● 更多關(guān)于NotificationSlot的介紹可以參考官網(wǎng)鏈接:

https://developer.harmonyos.com/cn/docs/documentation/doc-references/notificationslot-0000001054120100

想了解更多內(nèi)容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

 

責(zé)任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2016-04-26 09:28:01

apns開發(fā)者ios

2021-07-02 14:09:36

開發(fā)技能代碼

2017-12-13 14:24:08

Google 開發(fā)者瀏覽器

2012-11-13 10:34:03

PythonWeb

2015-11-09 10:50:42

2012-06-13 01:23:30

開發(fā)者程序員

2015-06-05 09:12:52

OpenStack設(shè)計指導(dǎo)開發(fā)者

2013-06-28 14:19:20

2023-09-28 21:39:26

HutoolJava工具包

2014-09-01 09:53:50

Android框架

2010-07-30 16:27:06

Flex開發(fā)

2018-10-16 11:03:19

API開發(fā)者AR

2012-01-16 08:56:17

開發(fā)程序員

2016-12-26 11:00:57

Java開發(fā)者工具

2010-03-01 10:20:27

Flex

2022-10-20 15:12:43

JavaScript技巧開發(fā)

2022-10-25 18:46:36

JavaScript

2010-07-28 14:21:43

Flex

2014-07-17 09:31:50

iOS8SDK

2023-08-10 08:31:53

工具實用網(wǎng)站
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产欧美一区二区三区在线看 | 国产精品一区在线 | 亚洲国产精品成人 | 久久久久久亚洲精品不卡 | 欧美福利 | 成年免费在线观看 | 国产精品久久久久久一区二区三区 | 中文字幕人成乱码在线观看 | 国产精品欧美一区二区三区不卡 | 欧美电影网 | 在线精品一区二区 | 日韩 国产 在线 | 欧美一区二区激情三区 | 久久狠狠| 精品美女 | 国产一区在线看 | 国产精品五月天 | 精品欧美乱码久久久久久1区2区 | 日韩欧美专区 | 久久精品一区二区 | 精品视频在线一区 | 欧美自拍第一页 | 日韩高清国产一区在线 | 性生生活大片免费看视频 | 国产精品精品视频一区二区三区 | 精品久久久久久红码专区 | 青青草综合网 | 亚洲电影一区 | 成人字幕网zmw | 国产成人精品亚洲日本在线观看 | 国产成人免费视频网站高清观看视频 | 亚洲色综合 | 国产精品国产三级国产a | 久久精品一 | 九九热这里只有精品在线观看 | 精品国产一区二区三区久久久久久 | 99精品视频网 | 2023亚洲天堂 | 日日夜夜视频 | 成人av资源在线 | 在线视频一区二区三区 |