ViewTreeObserver简介
生活随笔
收集整理的這篇文章主要介紹了
ViewTreeObserver简介
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、結構
public final class ViewTreeObserver extends Objectjava.lang.Objectandroid.view.ViewTreeObserver
二、概述
這是一個注冊監聽視圖樹的觀察者(observer),在視圖樹種全局事件改變時得到通知。這個全局事件不僅還包括整個樹的布局,從繪畫過程開始,觸摸模式的改變等。ViewTreeObserver不能夠被應用程序實例化,因為它是由視圖提供,參照getViewTreeObserver()以查看更多信息。
三、內部類
1 interface ViewTreeObserver.OnGlobalFocusChangeListener
2 //當在一個視圖樹中的焦點狀態發生改變時,所要調用的回調函數的接口類
3
4 interface ViewTreeObserver.OnGlobalLayoutListener
5 //當在一個視圖樹中全局布局發生改變或者視圖樹中的某個視圖的可視狀態發生改變時,所要調用的回調函數的接口類
6
7 interface ViewTreeObserver.OnPreDrawListener
8 //當一個視圖樹將要繪制時,所要調用的回調函數的接口類
9
10 interface ViewTreeObserver.OnScrollChangedListener
11 //當一個視圖樹中的一些組件發生滾動時,所要調用的回調函數的接口類
12
13 interface ViewTreeObserver.OnTouchModeChangeListener
14 //當一個視圖樹的觸摸模式發生改變時,所要調用的回調函數的接口類
四、公共方法
1 /**注冊一個回調函數,當在一個視圖樹中的焦點狀態發生改變時調用這個回調函數。
2 * 參數 listener 將要被添加的回調函數
3 *異常 IllegalStateException 如果isAlive() 返回false
4 */
5 public void addOnGlobalFocusChangeListener (ViewTreeObserver.OnGlobalFocusChangeListener listener)
6
7
8 /**注冊一個回調函數,當在一個視圖樹中全局布局發生改變或者視圖樹中的某個視圖的可視狀態發生改變時調用這個回調函數。
9 *參數 listener 將要被添加的回調函數
10 *異常 IllegalStateException 如果isAlive() 返回false
11 */
12 public void addOnGlobalLayoutListener (ViewTreeObserver.OnGlobalLayoutListener listener)
13
14
15
16 /**注冊一個回調函數,當一個視圖樹將要繪制時調用這個回調函數。
17 *參數 listener 將要被添加的回調函數
18 *異常 IllegalStateException 如果isAlive() 返回false
19 */
20 public void addOnPreDrawListener (ViewTreeObserver.OnPreDrawListener listener)
21
22
23 /**注冊一個回調函數,當一個視圖發生滾動時調用這個回調函數。
24 *參數 listener 將要被添加的回調函數
25 *異常 IllegalStateException 如果isAlive() 返回false
26 */
27 public void addOnScrollChangedListener (ViewTreeObserver.OnScrollChangedListener listener)
28
29
30 /**注冊一個回調函數,當一個觸摸模式發生改變時調用這個回調函數。
31 *參數 listener 將要被添加的回調函數
32 *異常 IllegalStateException 如果isAlive() 返回false
33 */
34 public void addOnTouchModeChangeListener (ViewTreeObserver.OnTouchModeChangeListener listener)
35
36
37 //當整個布局發生改變時通知相應的注冊監聽器。如果你強制對視圖布局或者在一個沒有附加到一個窗口的視圖的層次結構或者在GONE狀態下,它可以被手動的調用
38 public final void dispatchOnGlobalLayout ()
39
40 /**當一個視圖樹將要繪制時通知相應的注冊監聽器。如果這個監聽器返回true,則這個繪制將被取消并重新計劃。如果你強制對視圖布局或者在一個沒有附加到一個窗口的視圖的層次結構或者在一個GONE狀態下,它可以被手動的調用
41 *返回值 當前繪制能夠取消并重新計劃則返回true,否則返回false。
42 */
43 public final boolean dispatchOnPreDraw ()
44
45 /**指示當前的ViewTreeObserver是否可用(alive)。當observer不可用時,任何方法的調用(除了這個方法)都將拋出一個異常。如果一個應用程序保持和ViewTreeObserver一個歷時較長的引用,它應該總是需要在調用別的方法之前去檢測這個方法的返回值。
46 *返回值 但這個對象可用則返回true,否則返回false
47 */
48 public boolean isAlive ()
49
50
51 /**移除之前已經注冊的全局布局回調函數。
52 *參數 victim 將要被移除的回調函數
53 *異常 IllegalStateException 如果isAlive() 返回false
54 */
55 public void removeGlobalOnLayoutListener (ViewTreeObserver.OnGlobalLayoutListener victim)
56
57 /**移除之前已經注冊的焦點改變回調函數。
58 *參數 victim 將要被移除的回調函數
59 *異常 IllegalStateException 如果isAlive() 返回false
60 */
61 public void removeOnGlobalFocusChangeListener (ViewTreeObserver.OnGlobalFocusChangeListener victim)
62
63 /**移除之前已經注冊的預繪制回調函數。
64 *參數 victim 將要被移除的回調函數
65 *異常 IllegalStateException 如果isAlive() 返回false
66 */
67 public void removeOnPreDrawListener (ViewTreeObserver.OnPreDrawListener victim)
68
69 /**移除之前已經注冊的滾動改變回調函數。
70 *參數 victim 將要被移除的回調函數
71 *異常 IllegalStateException 如果isAlive() 返回false
72 */
73 public void removeOnScrollChangedListener (ViewTreeObserver.OnScrollChangedListener victim)
74
75 /**移除之前已經注冊的觸摸模式改變回調函數
76 *參數 victim 將要被移除的回調函數
77 *異常 IllegalStateException 如果isAlive() 返回false
78 */
79 public void removeOnTouchModeChangeListener (ViewTreeObserver.OnTouchModeChangeListener victim)
總結
以上是生活随笔為你收集整理的ViewTreeObserver简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ViewTreeObserver
- 下一篇: ListView中添加Button后,B