欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
設計Android的用戶(hù)界面(一)

在讀本文之前,會(huì )缺省的認為你已經(jīng)知道如何創(chuàng )建一個(gè)Android項目,并知道如何在模擬器中運行這個(gè)項目。并且,期望你已經(jīng)有一點(diǎn)HTML或者其他GUI的開(kāi)發(fā)經(jīng)驗。

在我的理解中,對開(kāi)發(fā)者來(lái)說(shuō),寫(xiě)J2SE的程序和J2ME的程序相比,最大的區別不是他們API或者是其他一些規則、限制等的不同,更多的是兩者程序界面(或者說(shuō)UI)方面的區別。

我們寫(xiě)任何一段程序,都是需要有UI的,因為我們的程序最終是給用戶(hù)去用的,即使我們寫(xiě)了一個(gè)工具,沒(méi)有任何顯式IO,我們也還是需要暴露必要的方法來(lái)提供別人使用,在此情景下,這些方法似乎也可以看作是UI。

對J2SE來(lái)說(shuō),一般都不會(huì )需要GUI,因為我們很少去寫(xiě)SWING、SWT程序,即使Sun力推的JavaFX,好像涉及的也不多,而對于J2ME來(lái)說(shuō),最大的困難可以就是那些GUI的實(shí)現,以及如何將程序的功能綁定到那些界面上,從界面中接收用戶(hù)的輸入,或者是用合適、合理的方式向界面輸出,無(wú)論是通過(guò)文本,或是曲線(xiàn)、圖形。

同理,如果你有J2EE的經(jīng)驗,服務(wù)后臺的代碼往往是相對易讀、易懂、系統并且內聚的,這些代碼看起來(lái)是如此的和諧、整潔、干凈。而如果涉及到界面,就會(huì )陡然復雜的多,即使各種各樣的framework試圖要解決View與Model、Control的協(xié)作問(wèn)題,結果卻讓大家更加的迷惑于各種配置之間??偸怯蠫UI的程序都會(huì )看起來(lái)有些凌亂和繁蕪。

似乎有些跑題… 打住…:)??瓤?,同樣,對于A(yíng)ndroid開(kāi)發(fā)來(lái)說(shuō),用戶(hù)界面的實(shí)現應該是比較重要的和復雜的一環(huán)。好消息是,到目前為止,“神仙”們也沒(méi)有發(fā)現其他更好的用戶(hù)界面實(shí)現方式,所以說(shuō)如果有HTML設計經(jīng)驗,或者說(shuō)有Swing,Flash等圖形設計經(jīng)驗,那么理解Android的UI設計,會(huì )容易的多,甚至會(huì )有似曾相識的感覺(jué)。

Android的用戶(hù)界面可以有兩種實(shí)現方式:使用XML或者是使用Java代碼。通過(guò)直接書(shū)寫(xiě)代碼的方式來(lái)實(shí)現界面是比較恐怖的事情。舉個(gè)例子來(lái)說(shuō),如果你有DHTML的經(jīng)驗,那么這兩者的區別可以比喻為:用XML來(lái)實(shí)現用戶(hù)界面就像直接寫(xiě)HTML代碼,而用 Java代碼來(lái)實(shí)現用戶(hù)界面就像用Javascript創(chuàng )建DOM對象來(lái)拼接頁(yè)面。所以,使用XML來(lái)布局界面應該是首選。

Android使用一個(gè)XML文件來(lái)定義用戶(hù)界面。為了方便理解,你可以直接把它理解為一個(gè)HTML文件。事實(shí)上,它也確實(shí)比較像一個(gè)HTML文件。

這個(gè)XML文件的格式為:

<ViewGroupClass xmlns:android="http://schemas.android.com/apk/res/android"id="@+id/string_name" (attributes)><widget or other nested ViewGroupClass>+<requestFocus/>(0 or 1 per layout file, assigned to any element)</ViewGroupClass>

這里面有一個(gè)比較重要的類(lèi)叫ViewGroup,這個(gè)XML的root節點(diǎn)必須是一個(gè)ViewGroup,或者是一個(gè)單一的Widget(整個(gè)XML只有一個(gè)元素)。Android幾乎所有的UI似乎都和ViewGroup有或多或少的關(guān)系。但是它只是一個(gè)abstract class,并不能直接使用,我們能用的,是它的一些子類(lèi),例如:

  • AbsoluteLayout
  • FrameLayout
  • LinearLayout
  • RelativeLayout
  • TableLayout
  • … 其他還有很多,以后用到的時(shí)候再說(shuō),一次性把這些東西都弄明白既不客觀(guān)也不現實(shí)。

從上述這幾個(gè)類(lèi)從名字就可看的出來(lái),他們是Layout,也就是布局,如果用過(guò)Swing的話(huà),這些東西和Swing的那套東西一致,如果沒(méi)有用過(guò) Swing,希望你用過(guò)HTML,那么每一個(gè)Layout,可以理解為有了特定排版樣式的DIV。在DIV的內部,可以放置其他的DIV,當然也可以放置最底層的元素,比如說(shuō)文本、文本框、單選按鈕、圖片等等。這里面所說(shuō)的最底層的元素,它們有一個(gè)超類(lèi)叫做View,這個(gè)超類(lèi)非常的超,連 ViewGroup都是它的子類(lèi)。ViewGroup就是能容納其他View的View。常用的View有很多,可以參考這里,后文再介紹。

關(guān)于XML布局,可以總結一下:

  1. 這個(gè)XML文件是由許多View嵌套組成的
  2. 如果布局中有多個(gè)元素,那么最頂層必須是ViewGroup(一個(gè)ViewGroup對象同時(shí)也是一個(gè)View對象),不可以是View,如果整個(gè)布局只有一個(gè)元素,那么最頂層元素就是這個(gè)唯一的元素。
  3. 在ViewGroup可以?xún)炔壳短譜iew(既然可以嵌套View,就更以嵌套ViewGroup了)
  4. 在View中,不可嵌套其他東西了,要不然它就是ViewGroup了,就是這么定義的。

用一個(gè)結構圖表示:

ViewGroup

上面提到的幾個(gè)ViewGroup,稍微詳細點(diǎn)介紹一下:

  • AbsoluteLayout,絕對定位的布局方式,在它內部嵌套的元素必須指定具體的位置。
  • FrameLayout,幀布局方式,說(shuō)幀不太容易理解,可以說(shuō)成是層布局方式,也就是說(shuō),在它內部的元素,是一層一層的疊加在一起的。如果用過(guò)Photoshop,或者Flash,這里面的層的概念是和他們一致的。如果最上層的元素是不透明的,并且比下面的元素尺寸要大,那么將看不到下面的元素,只能看到頂層元素。這些層的順序是:最新聲明的放到最前面??梢赃@樣理解,Android按文件的書(shū)寫(xiě)順序來(lái)組織這個(gè)布局,先聲明的放在第一層,再聲明的放到第二層,…,最后聲明的放在最頂層。
  • LinearLayout,線(xiàn)性布局方式(真不知道這該怎么翻譯,其實(shí)很多技術(shù)名詞還是不翻譯的好),這種布局比較常用,也比較簡(jiǎn)單,就是每個(gè)元素占一行,當然也可能聲明為橫向排放,也就是每個(gè)元素占一列。
  • RelativeLayout,相對定位的布局方式,這個(gè)比較好玩,在元素的位置的時(shí)候,使用相對位置,可以相對其他元素,也可以相對這個(gè)布局,就像我說(shuō):我現在站在pawa和 tempest的中間;或者說(shuō),我站在隊伍的中間。前者就是相對其他元素來(lái)定義位置,后者是相對整個(gè)布局來(lái)定義位置。(注:pawa和tempest是Android歷史上很著(zhù)名的兩位人物,具體請參閱 Roiding.com)。
  • TableLayout,表格的布局方式,我真的不忍心翻譯Table這個(gè)詞,翻譯成表格,似乎少了一些神韻,這里面的Table和HTML中的Table非常像,就連寫(xiě)法都非常像。

其實(shí),說(shuō)了這么一大堆,還是不如一個(gè)具體的實(shí)例看的痛快:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/hello"/></LinearLayout>

詳細解釋一下:

  • 首先,定義了一個(gè)LinearLayout,前面中說(shuō)過(guò),這個(gè)布局要么將子元素水平排列,要么將它們豎直排列。
    • android:orientation=”vertical”
      聲明此布局中的子元素要豎直排列,這樣如果在這個(gè)布局中有兩個(gè)子元素的話(huà),那么這兩個(gè)將分別各占一行,如果將這個(gè)值設置為”horizontal”,就變成了水平排列,那么兩個(gè)子元素將分別各占一列,但是在這個(gè)示例中,只聲明了一個(gè)子元素,你可以再為它添加一個(gè)子元素來(lái)觀(guān)察效果。
    • android:layout_width=”fill_parent”
      聲明此布局的寬度為:填滿(mǎn)parent,這里面的parent也不好翻譯,意思就是,如果它是嵌套在其他ViewGroup之中,那么那個(gè)ViewGroup的寬度就是它的寬度,如果它是頂層的元素,那么就填滿(mǎn)屏幕。
    • android:layout_height=”fill_parent”
      聲明此布局的高度為:填滿(mǎn)parent。
  • 然后,定義了一個(gè)TextView,一個(gè)TextView,就是一塊區域,用來(lái)顯示文本,用這個(gè)View定義的元素只能用來(lái)顯示,是不可以編輯的,如果想要可編輯的文本塊,那么應該使用它的子類(lèi)EditText,這個(gè)等后面遇到再說(shuō)。
    • android:layout_width=”fill_parent”
      同上。
    • android:layout_height=”wrap_content”
      wrap_content的意思是:夠用即可,那如果說(shuō)填滿(mǎn)整個(gè)parent都不夠用呢?那就只能顯示那么多了,空間不夠的只能被隱藏掉了,所以必要的時(shí)候得使用ScrollView,后面再說(shuō)。
    • android:text=”@string/hello”
      用來(lái)定義這個(gè)文本框中顯示的內容,你可以直接將字符串寫(xiě)在這里:android:text=”hello, Roind.com”,也可以像本例中的那樣,將所有的字符串放到一個(gè)資源文件中,然后在這里直接引用那個(gè)資源文件中的定義。在這里就是使用資源文件中的hello變量,在A(yíng)ndroid的缺省設置中,這個(gè)資源文件是:res/values/strings.xml。在這里你可能會(huì )問(wèn)為什么聲明一下”@string/hello”就知道使用這個(gè)文件中定義的字符串呢,這個(gè)也留在后面詳述,關(guān)于res目錄下的東西還有很多,可以參考一下這里或者這里。

每一種元素可以定義屬性有很多,并且這些屬性都可以和HTML的css中的屬性來(lái)類(lèi)比,遇到的時(shí)候再敘或者是翻一下相關(guān)文檔。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Android應用程序----UI界面控件(界面布局小記)
《Android Dev Guide》系列教程9:用戶(hù)界面之聲明布局
Android布局
android中如何動(dòng)態(tài)的添加/刪除布局及修改布局屬性?
Android 開(kāi)發(fā)之旅:深入分析布局文件&又是“Hello World!”
前端之程序目錄及UI簡(jiǎn)介
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久