一種為 Linux ARM 設備構建跨平臺 UI 的新方法(基于arm的linux系統移植)

AndroidXML 和 TotalCross 的運用為樹莓派和其他設備創建 UI 提供了更簡單的方法。

一種為 Linux ARM 設備構建跨平臺 UI 的新方法(基于arm的linux系統移植)

為應用程序創建良好的用戶體驗(UX)是一項艱巨的任務,尤其是在開發嵌入式應用程序時。今天,有兩種圖形用戶界面(GUI)工具通常用于開發嵌入式軟件:它們要么涉及復雜的技術,要么非常昂貴。

然而,我們已經創建了一個概念驗證(PoC),它提供了一種新的方法來使用現有的、成熟的工具為運行在桌面、移動、嵌入式設備和低功耗 ARM 設備上的應用程序構建用戶界面(UI)。我們的方法是使用 Android Studio 繪制 UI;使用 TotalCross在設備上呈現 Android XML;采用被稱為KnowCode的新TotalCross API;以及使用樹莓派 4來執行應用程序。

選擇 Android Studio

可以使用 TotalCross API 為應用程序構建一個美觀的響應式用戶體驗,但是在 Android Studio 中創建 UI 縮短了制作原型和實際應用程序之間的時間。

有很多工具可以用來為應用程序構建 UI,但是 Android Studio是全世界開發者最常使用的工具。除了它被大量采用以外,這個工具的使用也非常直觀,而且它對于創建簡單和復雜的應用程序都非常強大。在我看來,唯一的缺點是使用該工具所需的計算機性能,它比其他集成開發環境 (IDE) 如 VSCode 或其開源替代方案VSCodium要龐大得多。

通過思考這些問題,我們創建了一個概念驗證,使用 Android Studio 繪制 UI,并使用 TotalCross 直接在設備上運行 AndroidXML。

構建 UI

對于我們的 PoC,我們想創建一個家用電器應用程序來控制溫度和其他東西,并在 Linux ARM 設備上運行。

一種為 Linux ARM 設備構建跨平臺 UI 的新方法(基于arm的linux系統移植)

我們想為樹莓派開發我們的應用程序,所以我們使用 Android 的 ConstraintLayout來構建 848×480(樹莓派的分辨率)的固定屏幕大小的 UI,不過你可以用其他布局構建響應性 UI。

Android XML 為 UI 創建增加了很多靈活性,使得為應用程序構建豐富的用戶體驗變得容易。在下面的 XML 中,我們使用了兩個主要組件:ImageView和TextView。

TextView 元素用于向用戶顯示一些數據,比如建筑物內的溫度。大多數 ImageView 都用作用戶與 UI 交互的按鈕,但它們也需要實現屏幕上組件提供的事件。

用 TotalCross 整合

這個 PoC 中的第二項技術是 TotalCross。我們不想在設備上使用 Android 的任何東西,因為:

1。我們的目標是為 Linux ARM 提供一個出色的 UI。 2。我們希望在設備上實現低占用。 3。我們希望應用程序在低計算能力的低端硬件設備上運行(例如,沒有 GPU、 低 RAM 等)。

首先,我們使用 VSCode 插件創建了一個空的 TotalCross 項目。接下來,我們保存了drawable文件夾中的圖像副本和xml文件夾中的 Android XML 文件副本,這兩個文件夾都位于resources文件夾中:

一種為 Linux ARM 設備構建跨平臺 UI 的新方法(基于arm的linux系統移植)

為了使用 TotalCross 模擬器運行 XML 文件,我們添加了一個名為 KnowCode 的新 TotalCross API 和一個主窗口來加載 XML。下面的代碼使用 API 加載和呈現 XML:

public void initUI { XmlScreenAbstractLayout xmlCont = XmlScreenFactory.create(\"xml / homeApplianceXML.xml\"); swap(xmlCont);}

就這樣!只需兩個命令,我們就可以使用 TotalCross 運行 Android XML 文件。以下是 XML 如何在 TotalCross 的模擬器上執行:

一種為 Linux ARM 設備構建跨平臺 UI 的新方法(基于arm的linux系統移植)

完成這個 PoC 還有兩件事要做:添加一些事件來提供用戶交互,并在樹莓派上運行它。

添加事件

KnowCode API 提供了一種通過 ID(getControlByID) 獲取 XML 元素并更改其行為的方法,如添加事件、更改可見性等。

例如,為了使用戶能夠改變家中或其他建筑物的溫度,我們在 UI 底部放置了加號和減號按鈕,并在每次單擊按鈕時都會出現“單擊”事件,使溫度升高或降低一度:

Button plus = (Button) xmlCont.getControlByID(\"@ id/plus\");Label insidetempLabel = (Label) xmlCont.getControlByID(\"@ id/insideTempLabel\");plus.addPressListener(new PressListener { @Override public void controlPressed(ControlEvent e) { try { String tempString = insideTempLabel.getText; int temp; temp = Convert.toInt(tempString); insideTempLabel.setText(Convert.toString( temp)); } catch (InvalidNumberException e1) { e1.printStackTrace; } }});

在樹莓派 4 上測試

最后一步!我們在一臺設備上運行了應用程序并檢查了結果。我們只需要打包應用程序并在目標設備上部署和運行它。VNC也可用于檢查設備上的應用程序。

整個應用程序,包括資源(圖像等)、Android XML、TotalCross 和 Knowcode API,在 Linux ARM 上大約是 8MB。

下面是應用程序的演示:

一種為 Linux ARM 設備構建跨平臺 UI 的新方法(基于arm的linux系統移植)

在本例中,該應用程序僅為 Linux ARM 打包,但同一應用程序可以作為 Linux 桌面應用程序運行,在Android 設備 、Windows、windows CE 甚至 iOS 上運行。

所有示例源代碼和項目都可以在 HomeApplianceXML GitHub存儲庫中找到。

現有工具的新玩法

為嵌入式應用程序創建 GUI 并不需要像現在這樣困難。這種概念證明為如何輕松地完成這項任務提供了新的視角,不僅適用于嵌入式系統,而且適用于所有主要的操作系統,所有這些系統都使用相同的代碼庫。

我們的目標不是為設計人員或開發人員創建一個新的工具來構建 UI 應用程序;我們的目標是為使用現有的最佳工具提供新的玩法。

你對這種新的應用程序開發方式有何看法?在下面的評論中分享你的想法。

via: https://opensource.com/article/20/5/linux-arm-ui

作者:Bruno Muniz選題:lujun9972譯者:Chao-zhi校對:wxy

本文由 LCTT原創編譯,Linux中國榮譽推出

版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。

(0)
上一篇 2023年5月15日 上午10:04
下一篇 2023年5月15日 上午10:20

相關推薦

国产成人va亚洲电影| 午夜不卡av免费| 久久久亚洲欧洲日产国码农村 | 外国成人网在线观看免费视频| 一本伊大人香蕉在线观看| 女人与大拘交口述| 一个人晚上在线观看的免费视频| 大乳女人做受视频免费观看| a级毛片毛片免费观看久潮喷| 国产高清视频网站| 中文乱码精品一区二区三区| 好吊色青青青国产综合在线观看| а天堂中文最新一区二区三区 | 国产精品午夜无码体验区| 2021国产精品自在拍在线播放| 国产男女免费完整视频| 99久久免费国产精精品| 国产精品免费久久久久影院 | 九一制片厂果冻传媒56| 最近中文字幕完整视频高清10| 亚洲av综合色区无码专区桃色| 精品国产亚洲一区二区三区| 国产精品内射久久久久欢欢| 黑人大战亚洲人精品一区| 国产成人亚洲精品播放器下载| 色五月五月丁香亚洲综合网| 国产91在线播放动漫| 羞羞答答www网址进入在线观看| 国产一卡2卡3卡4卡无卡免费视频 国产一卡2卡3卡4卡网站免费 | 色妞AV永久一区二区国产AV| 国产97在线看| 狼人香蕉香蕉在线视频播放| 亚洲精品无码久久| 欧美videos娇小| 九九久久99综合一区二区| 成年网址网站在线观看| 久久夜色精品国产尤物| 日韩一级黄色影片| 久久久精品国产sm最大网站| 女性自慰aⅴ片高清免费| 99热精品久久|