歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 深入理解Android 之界面構造

深入理解Android 之界面構造

日期:2017/3/1 10:49:44   编辑:Linux編程

  UI界面,對於每個應用而言,是它與用戶進行交互的門臉。好的門臉,不只是是要亮麗可人,最好還能秀色可餐過目不忘,甚至還應該有涵養有氣質,彬彬有理溫柔耐心。

  對於開發者來說,鍛造這樣的面容,不但需要高超的技藝,也需要有稱手的工具和對得起黨的料子。俗話說,朽木不可雕也,芙蓉不是一日煉成的,不是什麼平台都能叫特能書。有套好用的UI框架,對於開發者而言,真有如沙漠中的甘露,而要是撞見了杯具的UI套件,整個界面開發就有如夢魇了。

  Android的UI框架,最核心的,是資源和Layout體系,然後,通過完善的控件庫,簡明的接口設計,進一步幫助開發者,能夠最快的搭建自己需要界面(聽到這裡,Symbian同學開始鑽土。..)。

  UI控件

  做UI,有時候就像搭積木,在Android中,這個最原子的積木塊,就是View。所有其他的UI元素,都是派生於此類的子孫類們。

  又從SDK中偷來張圖,用來描述Android的UI控件結構,在每一個window下,這都是一個標准而完整的樹結構。View有一個子類ViewGroup,它相當於一個容器類或者是復合控件,所有派生與ViewGroup的子類在這顆UI樹中都可以承擔著父節點的職責,而另一些繞過ViewGroup從View直通下來的,就只能蜷局在葉節點的范疇內了。

  之所有說這是一個很標准的控件樹,是因為父控件對子控件有絕對的掌控權,每個子控件的占地面積和位置,都是基於父控件來分配的,它能夠接受和處理的事件,也是父控件派發下去的。這樣的結構,被很多平台和框架廣泛的認可,和傳統的win開發和杯具的Symbian相比,雖然因為事件傳播途徑變長了,很多操作的效率變低了,但整個結構更有層次性,每個控件只需要多其父控件負責指揮子控件就好,職責明確,邏輯簡單,利於開發和設計。

  談及任何平台的控件,都有一些不可避免的主題,比如,每個控件如何標識,如何設定大小和位置,如何接受和處理事件,如何繪制,諸如此類。

  標識

  在Android中,你可以為每個控件選擇設定一個id,這個id的全局的唯一性不需要保證,但在某個局部的范圍內具有可識別性,這樣就可以通過這個id找到這個控件(如果不需要查找,就別設置了。..)。

  但是,在父控件中逐級的find比較,找到id匹配的控件,然後再做轉型,是一個比較重量的操作,於是Android又為控件憋出另一個屬性,tag。它接受任意object類型的數據,你可以把和這個控件對象相關的內容堆在裡面。比如,在list中,我們常常將和每個list item相關的所有控件元素封裝成一個object,扔到tag中,就不需要每次都去比較id進行尋找,更加高效快捷。

Copyright © Linux教程網 All Rights Reserved