1. 程式人生 > >Android中View和ViewGroup的詳細解釋:

Android中View和ViewGroup的詳細解釋:

Android中View和ViewGroup的詳細解釋

1. 概述:
Android系統中的所有UI類都是建立在View和ViewGroup這兩個類的基礎上的。所有View的子類成為”Widget”,所有ViewGroup的子類成為”Layout”。View和ViewGroup之間採用了組合設計模式,可以使得“部分-整體”同等對待。ViewGroup作為佈局容器類的最上層,佈局容器裡面又可以有View和ViewGroup。
2. 理解:
當我們執行程式的時候,有一個setContentView()方法,Activity其實不是顯示檢視(直觀上感覺是它),實際上Activity呼叫了PhoneWindow的setContentView()方法,然後載入檢視,將檢視放到這個Window上,而Activity其實構造的時候初始化的是Window(PhoneWindow),Activity其實是個控制單元,即可視的人機互動介面。
(1).打個比方如下:


Activity是一個工人,它來控制Window;Window是一面顯示屏,用來顯示資訊;View就是要顯示在顯示屏上的資訊,這些View都是層層重疊在一起(通過infalte()和addView())放到Window顯示屏上的。而LayoutInfalter就是用來生成View的一個工具,XML佈局檔案就是用來生成View的原料。
(2).Activity、Window、View之間的關係:
Activity是Window和View之間的橋樑,將View的內容資訊顯示在Window視窗上面。
3. 結構圖如下:
在Android中,view是不能直接新增子view的,要通過view的靜態內部類ViewGroup來新增。

這裡寫圖片描述
4.注意點:
所有Activity檢視的根節點都是FrameLayout,可以通過merge標籤來優化UI結構。

相關推薦

AndroidViewViewGroup詳細解釋

Android中View和ViewGroup的詳細解釋 1. 概述: Android系統中的所有UI類都是建立在View和ViewGroup這兩個類的基礎上的。所有View的子類成為”Widget”,所有ViewGroup的子類成為”Layout

AndroidViewViewGroup事件分發攔截機制完美分析

出自:http://www.cnblogs.com/linjzong/p/4191891.html Touch事件分發中只有兩個主角:ViewGroup和View。Activity的Touch事件事實上是呼叫它內部的ViewGroup的Touch事件,可以直接當成Vie

Android的基本元件ViewViewGroup介紹

Android的基本元件 1.1 Activity 1.1.1 Activity代表手機的一個螢幕 1.1.2 一個Android程式由多個Activity組成,即:一個Android程式由多屏內容組成 1.1.3 Activity相當於一個展板,本身

Android自定義ViewViewGroup知識點彙總

一、View的繪製流程 onMeasure()->onDraw()。 二、ViewGroup的繪製流程 onMeasure()->onLayout()->onDraw()(一般不重寫)

[譯]最佳安全實踐在 Java Android 使用 AES 進行對稱加密第2部分AES-CBC + HMAC

原文地址:Security Best Practices: Symmetric Encryption with AES in Java and Android: Part 2: AES-CBC + HMAC 本文是我上一篇文章:“最佳安全實踐:在 Java 和 Android 中使用 AES 進行

android view 的寬度高度

請轉載的朋友標明出處~~前言:今天在onCreate 的時候獲取view 的寬度 和 高度,發現結果是0。這就奇怪了,我已經在xml 中配置了高度、寬度了,怎麼會是0呢?度娘給出了答案!但是我還是希望能結合source code來解釋一下原因,所以我跟人小結一下。首先呢,看一

Android ViewAndroidView對觸控事件的處理傳遞dispatchTouchEvent、onInterceptTouchEvent

View中存在dispatchTouchEvent、onTouchEvent兩個方法。 而ViewGroup中則存在dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent三個方法。 呼叫順序依次為dispatchTouch

解決 Android View 的 setPivotX setPivotY 不生效的問題以及設定縮放中心的方法

背景是這樣的:有一個需求要對下方的關注按鈕實現如下動畫,動畫的最後要根據滑動位置對關注按鈕進行縮放,縮放結束時整體大小為控制元件原始大小的90%,最終效果圖如下所示(模擬器是 4.2 的系統,最上面的沉浸式有點問題,忽略之): 如圖,關注按鈕向上滑

AndroidgetDrawablegetColor過時的替代方法

this logs con 知識 log launcher 16px ase spa 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 前言 Android SDK 升級到 23 之後,getDrawable和getColor方法提示過時。 解決方案 getRe

android View, Window, Activity, WindowManager,ViewRoot幾者之間的關系

line 消息傳遞 post att 顯示 增加 調用 eas window對象 (1)View:最主要的UI組件,表示屏幕上的一個矩形區域。 (2)Window: 表示一個窗體,不一定有屏幕那麽大,能夠非常大也能夠非常小;

Android BitmapDrawable相互轉換的方法

canvas board null height .com factory oar tool pla 1、Drawable --> Bitmap [java] view plain copy Bitmap drawable2Bitmap(Drawabl

AndroidGalleryImageSwitcher同步自動(滾動)播放圖片庫

目標 art trac repl otto fin instance img com 本文主要內容是如何讓Gallery和ImageSwitcher控件能夠同步自動播放圖片集 ,看起來較難,然而,實現的方法非常簡單, 請跟我慢慢來。總的來說,本文要實現的效果如下圖:(截

AndroidView滑動實現方式

必須 elf 內部 track 視圖 相對 top roc mar 滑動作為Android中最基礎的特效之一,使用場景非常廣泛。實現的方式也有多種,理解各種滑動的實現方式。清楚在開發中根據自己的實際需求,選擇合理的實現方案。這篇文章從:scrollTo()/scroll

AndroidView的getX,getY...

都是 raw 知識 left 相對 就是 alt 就會 pos Android坐標系的理解直接關系到後面你Android進階部分的學習,如果沒有夯實的基礎,你自定義View時就會有種欲求不滿,欲罷不能——想搞懂卻又覺得難,想放棄又覺得舍不得。

AndroidRelativeLayoutLinearLayout性能分析

ant 顯示 二次 iou other comm 排列 vertica 簡單的 先看一些現象吧:用eclipse或者Android studio,新建一個Activity自動生成的布局文件都是RelativeLayout,或許你會認為這是IDE的默認設置問題,其實不然,

Android 可變引數的使用 如int...

每天積累一點點,時間久了,你就是大牛了     以前沒接觸過可變引數,見到就覺得挺新鮮的,特此記錄一下和大家分享。     1.可變引數的表示方式是物件後面加三個點(Object...),可以是 int...

AndroidServiceIntentService的差別

前言: ServiceTimeout(20 seconds)小概率型別Service在特定的時間內無法處理完成,會造成ANR — 應用程式無響應(ANR:Application Not Responding)的情況 ▲ 分析 : 避免ANR最核心的一點就是在主執行緒減少耗時操作。這時我們

Faster R-cnn的RPN網路詳細解釋

作者RPN網路前面的g層借用的是ZF網路,網路相對較淺,不過並不影響後期介紹。 1、首先,輸入圖片大小是 224*224*3(這個3是三個通道,也就是RGB三種) 2、然後第一層的卷積核維度是 7*7*3*96 (所以大家要認識到卷積核都是4維的,在caffe的矩陣計算中都是這麼實現的); 3、

AndroidSerializableParcelable序列化物件詳解

學習內容: 1.序列化的目的 2.Android中序列化的兩種方式 3.Parcelable與Serializable的效能比較 4.Android中如何使用Parcelable進行序列化操作 5.Parcelable的工作原理 6.相關例項   1.序列化

OepnGL VAOVBO詳細講解

   講解一:  講解二: 講解三:    講解四: 講解五:     講解六: 講解七: