編輯:關於Android編程
View和Activity的區別
View有哪些?
ViewGroup是什麼?
為什麼Google產生ViewGroup?
View的層級結構是什麼?
View的onMeasure()/onLayout()/onDraw()方法做了什麼?
View和Activity的區別
android的四大組件,Activity是四大組件中唯一一個用來和用戶進行交互的組件。可以說Activity就是android的視圖層。 如果再細化,Activity相當於視圖層中的控制層,是用來控制和管理View的,真正用來顯示和處理事件的實際上是View。 每個Activity內部都有一個Window對象, Window對象包含了一個DecorView(實際上就是FrameLayout),我們通過setContentView給Activity設置顯示的View實際上都是加到了DecorView中。
View有哪些?
android提供了種類豐富的View來應對各種需求,例如提供文字顯示的TextView,提供點擊事件的Button,提供圖片顯示的ImageView,還有各種布局文件,例如Relativilayout,Linearlayout等等。他們都是繼承自View。
ViewGroup是什麼?
ViewGroup繼承自View,並實現了兩個接口ViewParent和ViewManager。 ViewManager提供了三個抽象方法addView,removeView,updateViewLayout。用來添加、刪除、更新布局。 ViewParent主要提供了一系列操作子View的方法例如焦點的切換,顯示區域的控制等等。
為什麼Google產生ViewGroup?
實際上所有的事情View都能做,包括顯示復雜的界面,我們只需要設計一個復雜的View即可。例如短信通知的icon,一個可以顯示圖片又可以顯示文字的View,我們後期學習了View的draw方法後,可以輕松的設計一個View來達到這個效果,但是這樣不僅復雜,而且重用性較差,還會因為一點小改動而重復的創造輪子,這顯然不符合程序員偷懶的原則,所以我們可以完全把ImageView和TextView組合到一起就可以了,這個時候我們就需要一個容器,ViewGroup,來裝這兩個View。 ViewGroup和View最大的不同是可以組合多個View,那麼多個View在一起,該如何擺放,這就是ViewGroup需要解決的問題。
View的層級結構是什麼?
我們看到的界面,都是以一個ViewGroup作為根View,通過往ViewGroup中添加子View(可以是View,也可以是ViewGroup),來組合出各具特色的界面。 這種從根到葉的組合方式,我們可以看做成一個View樹。(類似於XML),而View的顯示和事件處理,都是依賴於這個View樹。 繪制和事件處理的起始點,都是從根View開始一級一級的往下傳遞。我們從任意一層發起繪制,都將反饋到根View,然後再從上往下傳遞。 之前我們說過根View就是Window中的DecorView,也就是一個FrameLayout。
View的onMeasure()/onLayout()/onDraw()方法做了什麼?
Measure測量一個View的大小
Layout擺放一個View的位置
Draw畫出View的顯示內容
接下來我們將依次講解Android Framwork的工作原理Interpolator的用法Interpolator這個東西很難進行翻譯,直譯過來的話是補間器的意思,它的主要作用是可以控制動畫的變化速率,比如去實現一種非線性運動的動
一、前言新的一年又開始了,大家是否還記得去年年末的時候,我們還有一件事沒有做,那就是解析Android中編譯之後的classes.dex文件格式,我們在去年的時候已經介紹
1 背景其實有點不想寫這篇文章的,但是又想寫,有些矛盾。不想寫的原因是隨便上網一搜一堆關於性能的建議,感覺大家你一總結、我一總結的都說到了很多優化注意事項,但是看過這些文
需要了解的先來張圖說明一下它們的關系你還要知道ViewGroup之間是可以嵌套的.View的繪制流程不知道大家有沒有這種疑惑, 為什麼我們在寫布局文件的時候, 一定要寫l