新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于嵌入式Linux圖形用戶(hù)接口的實(shí)現(xiàn)方法

基于嵌入式Linux圖形用戶(hù)接口的實(shí)現(xiàn)方法

作者: 時(shí)間:2011-12-08 來(lái)源:網(wǎng)絡(luò) 收藏

隨著Internet與網(wǎng)絡(luò)的迅速發(fā)展 并向家庭領(lǐng)域不斷擴(kuò)展,使消費(fèi)電子、計(jì)算機(jī)、通信(3C)一體化趨勢(shì)日趨明顯,系統(tǒng)再度成為研究與應(yīng)用的熱點(diǎn)。實(shí)時(shí)操作系統(tǒng)以?xún)r(jià)格低廉、功能強(qiáng)大又易于移植而正在被廣泛采用,成為新興的力量,如今隨著WAP手機(jī)、PDA、機(jī)頂盒、及DVD/VCD播放機(jī)已經(jīng)迅速普及,對(duì)這些手持式設(shè)備的GUI提出了更高的要求,希望能看到像PC機(jī)才擁有的華麗美觀的GUI。GUI已經(jīng)成為了人與機(jī)器溝通的橋梁,系統(tǒng)對(duì)GUI的需求越來(lái)越高,而這一切均要求有一個(gè)輕型、占用資源少、高性能、高可靠、可配置及美觀的GUI支持。

本文引用地址:http://www.butianyuan.cn/article/150001.htm

  1 Java的界面工具

  Java技術(shù)對(duì)于服務(wù)器,個(gè)人電腦和嵌入式系統(tǒng)來(lái)說(shuō)是一項(xiàng)偉大的技術(shù)。由于其具有跨平臺(tái)等特性。Java在服務(wù)器和桌面電腦方面的應(yīng)用是非常成功的。然而在GUI方面,Java只用非常有限的一些特征去構(gòu)建界面。其思想就是采用平臺(tái)無(wú)關(guān)的Java應(yīng)用程序打包到不同的操作系統(tǒng)來(lái)開(kāi)發(fā)本地界面,被稱(chēng)之為抽象的窗口工具(AWT)。僅有普通的部件如文件域、文本區(qū)、選擇框、單選按鈕、列表框和按鈕被AWT支持,圖形和圖像的特性支持非常有限,也就是說(shuō),只足夠構(gòu)建簡(jiǎn)單的applet程序。認(rèn)識(shí)到需要更高級(jí)的圖形用戶(hù)界面組件和圖形能力,Sun公司開(kāi)發(fā)了Swing,Java 2D,Java3D,圖像的輸入/輸出,以及Java高級(jí)圖像(JAI)。Swing是用來(lái)構(gòu)建Java圖形界面的標(biāo)準(zhǔn)API(應(yīng)用程序),一些AWT類(lèi)由Swing基礎(chǔ)而來(lái)。它有一套完全的組件從按鈕到文件域、表格、樹(shù)型和文件編輯器。這些組件不依賴(lài)于操作系統(tǒng)本地的部件,而是用原始的圖形像直線(xiàn)、矩形、文字畫(huà)出。這種畫(huà)代表感觀插件,它能夠模仿本地的感觀。SWT是Java開(kāi)發(fā)的,它的設(shè)計(jì)理念是最大化了操作系統(tǒng)的圖形構(gòu)件的API,就是說(shuō)只要操作系統(tǒng)提供了相應(yīng)圖形的構(gòu)件,那么SWT只是簡(jiǎn)單應(yīng)用JNI技術(shù)調(diào)用它們,只有那些操作系統(tǒng)中不提供的構(gòu)件,SWT才自己去做一個(gè)模擬的。另外SWT還提供對(duì)操作系統(tǒng)本地圖形用戶(hù)界面的直接訪(fǎng)問(wèn),因此,SWT的Java應(yīng)用程序擁有本地的圖形用戶(hù)界面并且可以和本地別的應(yīng)用程序和部件集成在一起。使用SWT開(kāi)發(fā)包,簡(jiǎn)單、跨平臺(tái)、可靠等這些Jaya語(yǔ)言本身所具有的優(yōu)點(diǎn)正漸漸融合到圖形界面的應(yīng)用程序開(kāi)發(fā)中去。Java語(yǔ)言的另一扇成功之門(mén)正在逐漸打開(kāi)。

  2 SWT+GtkFB圖形系統(tǒng)的體系結(jié)構(gòu)

  2.1 SWT+GtkFB圖形系統(tǒng)的體系結(jié)構(gòu)

SWT

  2.1.1 SWT

  SWT處于體系機(jī)構(gòu)的最上層,它與Java內(nèi)的AwT和Swing同屬于設(shè)計(jì)圖形界面所需的高級(jí)函數(shù)庫(kù)。而且SWT針對(duì)AWT 以及Swing的一些問(wèn)題作了改善,如今它已發(fā)展成一套與作業(yè)系統(tǒng)無(wú)關(guān)的圖形元件函數(shù)庫(kù)。在元件的產(chǎn)生方面采用了適當(dāng)?shù)哪M,在基本的元件方面是采用原有作業(yè)系統(tǒng)的,對(duì)于較復(fù)雜的元件才用仿真的技術(shù)。SWT的Java應(yīng)用程序擁有本地的圖形用戶(hù)界面,并且可以和本地別的應(yīng)用程序,以及部件集成在一起。

  SWT是基于Java語(yǔ)言開(kāi)發(fā)出來(lái)的高級(jí)圖形元件庫(kù),如圖2所示SWT在Java端通過(guò)JNI(Java Native InteRFace)技術(shù)直接調(diào)用native端的GtkFB來(lái)使用操作系統(tǒng)的資源,JNI技術(shù)使得SWT程序可以與其他語(yǔ)言編寫(xiě)的Native端的代碼互相協(xié)作,將它們整合在一起;另一方面可使運(yùn)行在JVM(JAava虛擬機(jī))中的SWT代碼調(diào)用GtkFB庫(kù)函數(shù)或其他程序;此外利用Invocation API,可將Java虛擬機(jī)嵌入到native端的應(yīng)用中。JNI這個(gè)是雙向的,相當(dāng)于橋梁和紐帶,它將SWT代碼和native端的GtkFB代碼連接起來(lái)。

SWT在Java端通過(guò)JNI(Java Native Interface)技術(shù)直接調(diào)用native端的GtkFB來(lái)使用操作系統(tǒng)的資源

  2.1.2 Gtk庫(kù)

  如圖1所示,GTK會(huì)用到幾個(gè)連接庫(kù),如基本數(shù)據(jù)類(lèi)型用的Glib庫(kù),它是由基礎(chǔ)類(lèi)、核心應(yīng)用支持類(lèi)、實(shí)用功能類(lèi)、數(shù)據(jù)類(lèi)和對(duì)象系統(tǒng)類(lèi)五個(gè)部分組成的。

  Pango是用于國(guó)際化文本的布局和顯示的全功能框架。Pango可以處理以非從左到右方向排列的文本,并且可以容易地管理復(fù)雜語(yǔ)言,甚至還可以處理根據(jù)使用環(huán)境而采用不同形式的信函。例如它支持雙向文本,用戶(hù)可以將從左到右的文本和從右到左的文本混合編排;還可有用于確定各種復(fù)雜文本(如阿拉伯語(yǔ)和泰米爾語(yǔ))形狀的插件。Pango不僅僅是國(guó)際化,而且Pango庫(kù)在Xft和XRender的支持下能很好地處理抗鋸齒字體文本的顯示。

  Pango還支持各種圖形格式如libpng,libjpeg,libtiff和Framebuffer port用的FreeType等。實(shí)際上GTK提供gdk-pixbuf,gdk和gtk三個(gè)連接庫(kù),其中Gdk-pixbuf讓我們可做相關(guān)的圖像工作,gdk是窗口繪圖系統(tǒng)的抽象層,framebuffer相關(guān)的工作大部分在此完成,而gtk則是高層的應(yīng)用程序接口。


  Atk(Accessibility Toolkit)可訪(fǎng)問(wèn)性工具箱。GTK充分利用ATK使殘障人士(如視力低下或行動(dòng)不便)與GTK應(yīng)用程序交互成為可能。

linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)

上一頁(yè) 1 2 3 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉