日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
用XML和Java構(gòu)建樹莓派打印機(jī)的用戶界面

使用 TotalCross 來快速構(gòu)建嵌入式系統(tǒng)程序的用戶界面。

從頭開始構(gòu)建 GUI 是一個(gè)非常耗時(shí)的過程,以硬編碼的方式處理所有的位置和對齊對于一些程序員來說確實(shí)很困難。所以在本文中,我將演示如何使用 XML 加快這一過程。

本項(xiàng)目使用 TotalCross 作為目標(biāo)框架。TotalCross 是一個(gè)開源的跨平臺(tái)軟件開發(fā)工具包(SDK),旨在更快地為嵌入式設(shè)備創(chuàng)建 GUI。TotalCross 無需在設(shè)備上運(yùn)行 Java 即可提供 Java 的開發(fā)優(yōu)勢,因?yàn)樗褂米约旱淖止?jié)碼和虛擬機(jī)(TC 字節(jié)碼TC bytecode 和 TCVM)來增強(qiáng)性能。

我還使用了 Knowcode-XML,這是一個(gè)用于 TotalCross 框架的開源 XML 解析器,它可以將 XML 文件轉(zhuǎn)換為 TotalCross 組件。

項(xiàng)目需求

要重現(xiàn)此項(xiàng)目,你需要:


  • ??KnowCode-XML??
  • ??VSCode?? 或 ??VSCodium??
  • ??一個(gè) Android 開發(fā)環(huán)境??
  • ??用于 VSCode 的 TotalCross 插件??
  • 適用于你的開發(fā)平臺(tái)(??Linux??、??Mac?? 或 ??Windows??)的 Java,需要 Java 11(或更高版本)
  • ??Git??

制作嵌入式應(yīng)用程序

該應(yīng)用程序由一個(gè)具有掃描、打印和復(fù)印等基本打印功能的嵌入式 GUI 組成。

打印機(jī)初始化畫面

構(gòu)建這個(gè) GUI 需要幾個(gè)步驟,包括使用 Android-XML 生成 GUI,然后使用 Knowcode-XML 解析器在 TotalCross 框架上運(yùn)行它。

1、生成 Android XML

要?jiǎng)?chuàng)建 XML 文件,首先構(gòu)建一個(gè)簡單的 Android 屏幕,然后對其進(jìn)行自定義。如果你不知道如何編寫 Android-XML,或者你只是想簡單嘗試一下,你可以從這個(gè) ??GitHub 項(xiàng)目?? 中下載這個(gè)應(yīng)用程序的 XML。該項(xiàng)目還包含渲染 GUI 要用到的圖片。

2、調(diào)整 XML

生成 XML 文件后,你需要進(jìn)行一些微調(diào)以確保所有內(nèi)容都已經(jīng)對齊、比例正確并且圖像的路徑正確。

將 XML 布局添加到 ??Layouts?? 文件夾,將所有資源添加到 ??Drawable?? 文件夾。然后你就可以開始自定義 XML 了。

例如,如果想要更改 XML 對象的背景,可以更改 ??android:background?? 屬性:

android:background="@drawable/scan"

你也可以使用 ??tools:layout_editor_absoluteX?? 和 ??tools:layout_editor_absoluteY?? 更改對象的位置:

tools:layout_editor_absoluteX="830dp"
tools:layout_editor_absoluteY="511dp"

或者使用 ??android:layout_width?? 和 ??android:layout_height?? 更改對象的大?。?/p>

android:layout_width="70dp"
android:layout_height="70dp"

如果要在對象上放置文本,可以使用 ??android:textSize??、??android:text??、??android:textStyle?? 和 ??android:textColor??:

android:textStyle="bold"
android:textColor="#000000"
android:textSize="20dp"
android:text="2:45PM"

下面是一個(gè)完整的 XML 對象的示例:

               android:id="@+id/ImageButton"
android:layout_width="70dp"
android:layout_height="70dp"
tools:layout_editor_absoluteX="830dp"
tools:layout_editor_absoluteY="511dp"
android:background="@drawable/home_config" />

3、在 TotalCross 上運(yùn)行 GUI

完成所有 XML 調(diào)整后,就可以在 TotalCross 上運(yùn)行它了。在 TotalCross 擴(kuò)展(LCTT 譯注:在 VSCode 里面)上創(chuàng)建一個(gè)新項(xiàng)目,并將 ??XML?? 和 ??Drawable?? 文件夾添加到 ??Main?? 文件夾里。如果你仍然不確定如何創(chuàng)建 TotalCross 項(xiàng)目,請參閱我們的 ??入門指南??。

配置好環(huán)境后,使用 ??totalcross.knowcode.parse.XmlContainerFactory?? 和 ??import totalcross.knowcode.parse.XmlContainerLayout?? 在 TotalCross 框架上使用 XML GUI。 你可以在其 ??GitHub 頁面?? 上找到更多關(guān)于使用 KnowCode-XML 的信息。

4、添加過渡效果

這個(gè)項(xiàng)目的平滑過渡效果是由 ??SlidingNavigator?? 類創(chuàng)建的,它使用 TotalCross 的 ??ControlAnimation?? 類從一個(gè)屏幕滑到另一個(gè)屏幕。

在 ??XMLpresenter?? 類上調(diào)用 ??SlidingNavigator??:

new SlidingNavigator(this).present(HomePresenter.class);

在 ??SlidingNavigator?? 類上實(shí)現(xiàn) ??present?? 函數(shù):

public void present(Class presenterClass)
throws InstantiationException, IllegalAccessException {
final XMLPresenter presenter = cache.containsKey(presenterClass) ? cache.get(presenterClass)
: presenterClass.newInstance();
if (!cache.containsKey(presenterClass)) {
cache.put(presenterClass, presenter);
}

if (presenters.isEmpty()) {
window.add(presenter.content, LEFT, TOP, FILL, FILL);
} else {
XMLPresenter previous = presenters.lastElement();

window.add(presenter.content, AFTER, TOP, SCREENSIZE, SCREENSIZE, previous.content);

使用動(dòng)畫控件中的 ??PathAnimation?? 來創(chuàng)建從一個(gè)屏幕到另一個(gè)屏幕的滑動(dòng)動(dòng)畫:

         PathAnimation.create(previous.content, -Settings.screenWidth, 0, new ControlAnimation.AnimationFinished() {
@Override
public void onAnimationFinished(ControlAnimation anim) {
window.remove(previous.content);
}
}, 1000).with(PathAnimation.create(presenter.content, 0, 0, new ControlAnimation.AnimationFinished() {
@Override
public void onAnimation Finished(Control Animation anim) {
presenter.content.setRect(LEFT, TOP, FILL, FILL);
}
}, 1000)).start();
}
presenter.setNavigator(this);
presenters.push(presenter);
presenter.bind2();
if (presenter.isFirstPresent) {
presenter.onPresent();
presenter.isFirstPresent = false;
}

5、加載環(huán)形進(jìn)度條

打印機(jī)應(yīng)用程序的另一個(gè)不錯(cuò)的功能是顯示進(jìn)度的加載屏幕動(dòng)畫。它包括文本和旋轉(zhuǎn)動(dòng)畫。

加載環(huán)形進(jìn)度條

通過添加定時(shí)器和定時(shí)器監(jiān)聽器來更新進(jìn)度標(biāo)簽,然后調(diào)用函數(shù) ??spinner.start()?? 來實(shí)現(xiàn)此功能。所有的動(dòng)畫都是由 TotalCross 和 KnowCode 自動(dòng)生成的:

public void startSpinner() {
time = content.addTimer(500);
content.addTimerListener((e) -> {
try {
progress(); // Updates the Label
} catch (InstantiationException | IllegalAccessException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
});
Spinner spinner = (Spinner) ((XmlContainerLayout) content).getControlByID("@+id/spinner");
spinner.start();
}

這里的環(huán)形進(jìn)度條被實(shí)例化為對 XML 文件中描述的 ??XmlContainerLayout?? ??spinner?? 的引用:

android:id="@+id/spinner"
android:layout_width="362dp"
android:layout_height="358dp"
tools:layout_editor_absoluteX="296dp"
tools:layout_editor_absoluteY="198dp"
android:indeterminateTint="#2B05C7"
style="?android:attr/progressBarStyle" />

6、構(gòu)建應(yīng)用程序

是時(shí)候構(gòu)建應(yīng)用程序了。你可以在 ??pom.xml?? 中查看和更改目標(biāo)系統(tǒng)target systems。 請確保 ??Linux Arm?? 目標(biāo)可用。

如果你使用的是 VSCode,請按下鍵盤上的 ??F1?? 鍵,選擇 ??TotalCross: Package?? 并等待完成。 然后就可以在 ??Target?? 文件夾中看到安裝文件了。

7、在樹莓派上部署和運(yùn)行應(yīng)用程序

要使用 SSH 協(xié)議在 ??樹莓派?? 上部署應(yīng)用程序,請按鍵盤上的 ??F1??。選擇 ??TotalCross: Deploy&Run?? 并提供有關(guān)你的 SSH 連接的信息,如:用戶名、IP地址、密碼和應(yīng)用程序路徑。

TotalCross:部署與運(yùn)行

配置 SSH 用戶名

配置 IP 地址

輸入密碼

配置路徑

總結(jié)

KnowCode 讓使用 Java 創(chuàng)建和管理應(yīng)用程序屏幕變得更加容易。Knowcode-XML 將你的 XML 轉(zhuǎn)換為 TotalCross GUI 界面,然后生成二進(jìn)制文件以在你的樹莓派上運(yùn)行。

將 KnowCode 技術(shù)與 TotalCross 相結(jié)合,使你能夠更快地創(chuàng)建嵌入式應(yīng)用程序。 你可以訪問我們在 GitHub 上的 ??嵌入式示例?? 并編輯你自己的應(yīng)用程序,了解你還可以做什么。


當(dāng)前標(biāo)題:用XML和Java構(gòu)建樹莓派打印機(jī)的用戶界面
網(wǎng)頁地址:http://www.dlmjj.cn/article/dpigojh.html