精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Java UI框架(Position和AdaptiveBox Layout)設計

jf_Vqngj70R ? 來源:美男子玩編程 ? 2023-07-31 14:10 ? 次閱讀

1

Position Layout

在PositionLayout中,子組件通過指定準確的x/y坐標值在屏幕上顯示。(0, 0)為左上角,當向下或向右移動時,坐標值變大;允許組件之間互相重疊。

PositionLayout示意圖:

9a16a146-2f57-11ee-815d-dac502259ad0.png

PositionLayout以坐標的形式控制組件的顯示位置,允許組件相互重疊。

在layout目錄下的XML文件中創建PositionLayout并添加多個組件,并通過position_x和position_y屬性設置子組件的坐標。

使用PositionLayout的布局效果:

9a22f6c6-2f57-11ee-815d-dac502259ad0.png

示例代碼:

xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:id="$+id:position"
    ohos:height="match_parent"
    ohos:width="300vp"
    ohos:background_element="#3387CEFA">


    ohos:id="$+id:position_text_1"
        ohos:height="50vp"
        ohos:width="200vp"
        ohos:background_element="#9987CEFA"
        ohos:position_x="50vp"
        ohos:position_y="8vp"
        ohos:text="Title"
        ohos:text_alignment="center"
        ohos:text_size="20fp"/>


    


    

設置子組件的坐標時(position_x和position_y屬性),除了上述示例中的XML方式,還可以在對應的AbilitySlice中通過setPosition(int x, int y)接口設置,Java示例代碼如下:

Text title = (Text)findComponentById(ResourceTable.Id_position_text_1);
        Text content1 = (Text)findComponentById(ResourceTable.Id_position_text_2);
        Text content2 = (Text)findComponentById(ResourceTable.Id_position_text_3);


        title.setPosition(vp2px(50), vp2px(8));
        content1.setPosition(vp2px(8), vp2px(64));
        content2.setPosition(vp2px(92), vp2px(188));

單位轉換的方法如下:

private int vp2px(float vp){
        return AttrHelper.vp2px(vp,this);
    }
對于超過布局本身大小的組件,超出部分將不顯示。

Right組件右側超出部分將不顯示:

9a3884b4-2f57-11ee-815d-dac502259ad0.png

示例代碼:




    ...


    ohos:id="$+id:position_text_4"
        ohos:height="120vp"
        ohos:width="120vp"
        ohos:background_element="#9987CEFA"
        ohos:position_x="212vp"
        ohos:position_y="64vp"
        ohos:text="Right"
        ohos:text_alignment="center"
        ohos:text_size="20fp"/>

2

AdaptiveBox Layout

AdaptiveBox Layout是自適應盒子布局,該布局提供了在不同屏幕尺寸設備上的自適應布局能力,主要用于相同級別的多個組件需要在不同屏幕尺寸設備上自動調整列數的場景。

該布局中的每個子組件都用一個單獨的“盒子”裝起來,子組件設置的布局參數都是以盒子作為父布局生效,不以整個自適應布局為生效范圍。

該布局中每個盒子的寬度固定為布局總寬度除以自適應得到的列數,高度為match_content,每一行中的所有盒子按高度最高的進行對齊。

該布局水平方向是自動分塊,因此水平方向不支持match_content,布局水平寬度僅支持match_parent或固定寬度。

自適應僅在水平方向進行了自動分塊,縱向沒有做限制,因此如果某個子組件的高設置為match_parent類型,可能導致后續行無法顯示。

AdaptiveBox Layout示意圖:

9a5941e0-2f57-11ee-815d-dac502259ad0.jpg

AdaptiveBox Layout布局常用方法如下:

方法 功能
addAdaptiveRule(int minWidth, int maxWidth, int columns) 添加一個自適應盒子布局規則。
removeAdaptiveRule(int minWidth, int maxWidth, int columns) 移除一個自適應盒子布局規則。
clearAdaptiveRules() 移除所有自適應盒子布局規則。

在AdaptiveBox Layout中添加和刪除自適應盒子布局規則的效果對比如下。

9a685fa4-2f57-11ee-815d-dac502259ad0.gif

XML布局示例代碼:

xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:height="match_parent"
    ohos:width="match_parent"
    ohos:orientation="vertical">


    xmlns:ohos="http://schemas.huawei.com/res/ohos"
        ohos:height="0vp"
        ohos:width="match_parent"
        ohos:weight="1"
        ohos:id="$+id:adaptive_box_layout">


        

Java關鍵代碼:

AdaptiveBoxLayout adaptiveBoxLayout = (AdaptiveBoxLayout)findComponentById(ResourceTable.Id_adaptive_box_layout);


findComponentById(ResourceTable.Id_add_rule_btn).setClickedListener((component-> {
    // 添加規則
    adaptiveBoxLayout.addAdaptiveRule(100, 2000, 3);
    // 更新布局
    adaptiveBoxLayout.postLayout();
}));


findComponentById(ResourceTable.Id_remove_rule_btn).setClickedListener((component-> {
    // 移除規則
    adaptiveBoxLayout.removeAdaptiveRule(100, 2000, 3);
    // 更新布局
    adaptiveBoxLayout.postLayout();
}));





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JAVA語言
    +關注

    關注

    0

    文章

    138

    瀏覽量

    20079
  • XML技術
    +關注

    關注

    0

    文章

    15

    瀏覽量

    6010
  • LAYOUT技術
    +關注

    關注

    0

    文章

    3

    瀏覽量

    5952
  • Layout設計
    +關注

    關注

    1

    文章

    13

    瀏覽量

    1597
  • XML加密
    +關注

    關注

    0

    文章

    3

    瀏覽量

    982

原文標題:HarmonyOS學習路之開發篇—Java UI框架(Position和AdaptiveBox Layout)

文章出處:【微信號:美男子玩編程,微信公眾號:美男子玩編程】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    【HarmonyOS HiSpark AI Camera試用連載 】鴻蒙JS UI介紹

    開發的FA應用,這里的FA應用特指JS FA應用。使用Java開發FA應用請參考Java UI框架。Framework前端框架層主要完成前端
    發表于 01-11 20:10

    請教鴻蒙應用開發JAVA UI 框架ProgressBar或者RoundProgressBar怎么實現滑動調節

    如題https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ui-java
    發表于 01-12 15:23

    輕量級的ui框架如何去制作

    原創分享:自制輕量級單片機UI框架框架元素用戶接口代碼開源平時常看csdn,但是從來沒有自己寫過。正好這幾天需要用單片機做一個簡易的ui界面,于是自己寫了一個輕量級的
    發表于 07-14 07:39

    基于HarmonyOS Java UI使用元數據綁定框架實現UI和數據源的綁定

    1. 介紹元數據綁定框架是基于HarmonyOS SDK開發的一套提供UI和數據源綁定能力的框架。通過使用元數據綁定框架,HarmonyOS應用開發者無需開發繁瑣重復的代碼即可實現綁定
    發表于 08-18 10:23

    基于HarmonyOS Java UI,使用元數據綁定框架,實現UI和數據源的綁定

    1. 介紹元數據綁定框架是基于HarmonyOS SDK開發的一套提供UI和數據源綁定能力的框架。通過使用元數據綁定框架,HarmonyOS應用開發者無需開發繁瑣重復的代碼即可實現綁定
    發表于 09-01 14:54

    基于HarmonyOS Java UI,實現常見組件或者布局

    /resources/base/layout目錄下新建布局文件tab_list.xml,此布局文件中主要使用Tablist組件,并設置其樣式。 編寫AbilitySlice文件在src/main/java
    發表于 10-09 14:13

    鴻蒙應用開發的JS UI框架如何實現高德地圖的訪問?

    鴻蒙應用,現在分為Java UI框架和Ark UI框架,其中JS UI開發者
    發表于 04-28 11:44

    求助!請問如何在JS UI項目里增加java UI頁面?

    項目用的js UI,視頻解碼無法在js視頻播放;想增加一個java UI的視頻播放器?或者視頻編解碼的其他解決方案?
    發表于 05-10 10:48

    DevEco Studio里的java UI框架有沒有必要做拖拽式編程呢?

      DevEco Studio已經支持js UI框架拖拽式編程,你覺得java UI框架有沒有必要做拖拽式編程呢?
    發表于 05-18 15:32

    CSS框架:Semantic UI的優缺點

    作為一名全棧開發人員,Jack Lukic使用自然語言原理創建了Semantic UI框架。憑借著jQuery和LESS功能,Semantic UI提供了光滑、平整且精細的外觀,以及輕量級的用戶
    的頭像 發表于 07-01 16:06 ?1.4w次閱讀

    在HarmonyOS版本下如何基于JS UI框架來開發?

    作者:zhenyu ,華為軟件開發工程師 在當前HarmonyOS版本下,如何基于JS UI框架來開發呢? 1JS UI框架下FA與PA交互的使用場景通常一個典型使用JS
    的頭像 發表于 07-13 09:24 ?2148次閱讀

    深入解析UI框架簡介以及業界發展趨勢

    作者:yuzhiqiang、sunfei、wanglei,華為軟件架構工程師UI 框架簡介以及業界發展趨勢 UI,即用戶界面,主要包含視覺(比如圖像、文字、動畫等可視化內容)以及交互(比如按鈕點擊
    的頭像 發表于 08-04 14:25 ?5633次閱讀
    深入解析<b class='flag-5'>UI</b><b class='flag-5'>框架</b>簡介以及業界發展趨勢

    全面解讀HarmonyOS新一代UI框架

    作者:yuzhiqiang,UI編程框架首席技術專家 在Harmony 3.0.0開發者預覽版中,包含了新一代的聲明式UI框架ArkUI 3.0、多語言跨平臺編譯器ArkCompile
    的頭像 發表于 10-29 10:21 ?2661次閱讀
    全面解讀HarmonyOS新一代<b class='flag-5'>UI</b><b class='flag-5'>框架</b>

    基于Java的接口快速開發框架——magic-api

    magic-api 是一個基于Java的接口快速開發框架,編寫接口將通過magic-api提供的UI界面完成,自動映射為HTTP接口,無需定義Controller、Service、Dao、Mapper、XML、VO等
    發表于 07-19 11:42 ?884次閱讀
    基于<b class='flag-5'>Java</b>的接口快速開發<b class='flag-5'>框架</b>——magic-api

    基于springboot和vue框架Java

    本文將詳細介紹基于Spring Boot和Vue框架進行Java應用開發的實踐。首先,將介紹Spring Boot和Vue框架的基本概念及其優點。然后,將詳細介紹如何搭建Spring Boot
    的頭像 發表于 12-03 15:15 ?968次閱讀