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

用 XML 和 Java 構建樹莓派打印機的用戶界面

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

使用 TotalCross 來快速構建嵌入式系統程序的用戶界面。

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

本項目使用 TotalCross 作為目標框架。TotalCross 是一個開源的跨平臺軟件開發工具包(SDK),旨在更快地為嵌入式設備創建 GUI。TotalCross 無需在設備上運行 Java 即可提供 Java 的開發優勢,因為它使用自己的字節碼和虛擬機(TC 字節碼TC bytecode 和 TCVM)來增強性能。

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

項目需求

要重現此項目,你需要:

制作嵌入式應用程序

該應用程序由一個具有掃描、打印和復印等基本打印功能的嵌入式 GUI 組成。

打印機初始化畫面

構建這個 GUI 需要幾個步驟,包括使用 Android-XML 生成 GUI,然后使用 Knowcode-XML 解析器在 TotalCross 框架上運行它。

1、生成 Android XML

要創建 XML 文件,首先構建一個簡單的 Android 屏幕,然后對其進行自定義。如果你不知道如何編寫 Android-XML,或者你只是想簡單嘗試一下,你可以從這個 ??GitHub 項目?? 中下載這個應用程序的 XML。該項目還包含渲染 GUI 要用到的圖片。

2、調整 XML

生成 XML 文件后,你需要進行一些微調以確保所有內容都已經對齊、比例正確并且圖像的路徑正確。

將 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?? 更改對象的大小:

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"

下面是一個完整的 XML 對象的示例:

    <ImageButton
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 上運行 GUI

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

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

4、添加過渡效果

這個項目的平滑過渡效果是由 ??SlidingNavigator?? 類創建的,它使用 TotalCross 的 ??ControlAnimation?? 類從一個屏幕滑到另一個屏幕。

在 ??XMLpresenter?? 類上調用 ??SlidingNavigator??:

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

在 ??SlidingNavigator?? 類上實現 ??present?? 函數:

public void present(Class<? extends XMLPresenter> 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);

使用動畫控件中的 ??PathAnimation?? 來創建從一個屏幕到另一個屏幕的滑動動畫:

         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、加載環形進度條

打印機應用程序的另一個不錯的功能是顯示進度的加載屏幕動畫。它包括文本和旋轉動畫。

加載環形進度條

通過添加定時器和定時器監聽器來更新進度標簽,然后調用函數 ??spinner.start()?? 來實現此功能。所有的動畫都是由 TotalCross 和 KnowCode 自動生成的:

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();
}

這里的環形進度條被實例化為對 XML 文件中描述的 ??XmlContainerLayout?? ??spinner?? 的引用:

<ProgressBar
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、構建應用程序

是時候構建應用程序了。你可以在 ??pom.xml?? 中查看和更改目標系統target systems。 請確保 ??Linux Arm?? 目標可用。

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

7、在樹莓派上部署和運行應用程序

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

TotalCross:部署與運行

配置 SSH 用戶名

配置 IP 地址

輸入密碼

配置路徑

總結

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

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

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2020-07-16 21:00:05

樹莓派Kubernetes集Linux

2011-05-06 15:00:16

老式打印機無線打印機

2009-04-11 01:22:19

2011-05-07 09:59:31

施樂LED打印機普通激光打印機

2021-12-03 11:56:10

打印機攻擊漏洞

2019-03-24 20:30:18

樹莓派Linux

2011-05-04 17:23:01

打印機

2017-04-13 09:42:09

打印機設備噴打

2011-04-27 10:15:14

打印機用戶體驗

2011-07-14 23:02:15

打印機評測

2011-04-26 15:31:45

聯想打印機LJ2200清零

2021-12-05 12:10:05

打印機漏洞HP公司

2009-11-26 17:03:24

Open Suse打印

2011-08-24 23:43:04

打印機對比評測

2011-06-21 10:00:39

惠普打印機行情

2011-04-26 13:31:05

噴墨打印機

2011-05-29 11:45:39

打印機技巧

2011-03-21 10:10:38

nagios打印機

2011-05-03 16:22:33

打印機

2009-01-03 08:57:00

網絡打印機共享
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜电影网站 | 国产在线麻豆精品入口 | www日本在线观看 | 国外成人在线视频 | 精品国产一区二区三区在线观看 | 国产www成人 | 91久久精品| 国产成人免费视频网站高清观看视频 | 欧美一级电影免费 | 日韩国产高清在线观看 | av影音资源 | 亚洲一区免费视频 | 免费观看一级毛片视频 | 电影在线| 久草视频观看 | 久久国内| 不卡av电影在线播放 | 久草.com| www久久久 | 中文字幕在线观看一区二区 | 美日韩一区二区 | 亚洲v日韩v综合v精品v | www九色 | 久久久久久蜜桃一区二区 | 久久成人一区二区三区 | 欧美日韩精品在线免费观看 | 日日夜夜狠狠操 | 国产精品1区| 毛片网在线观看 | 秋霞电影一区二区三区 | 亚洲www啪成人一区二区麻豆 | 美女一级黄| 美女视频三区 | 欧美国产精品一区二区三区 | 欧美一级久久 | 激情视频中文字幕 | 成人免费网站视频 | 成人美女免费网站视频 | 亚洲天堂久久新 | 黄色在线免费观看 | 婷婷色国产偷v国产偷v小说 |