?
Dieses Dokument verwendet PHP-Handbuch für chinesische Websites Freigeben
ViewTreeObserver
版本:Android 3.0 r1
?
結(jié)構(gòu)
繼承關(guān)系
public final class ViewTreeObserver extends Object
????????
java.lang.Object
???????? android.view.ViewTreeObserver
?
類概述
用于注冊監(jiān)聽的視圖樹觀察者(observer),在視圖樹種全局事件改變時(shí)得到通知。這個(gè)全局事件不僅還包括整個(gè)樹的布局,從繪畫過程開始,觸摸模式的改變等。ViewTreeObserver不能夠被應(yīng)用程序?qū)嵗?,因?yàn)樗怯梢晥D提供,參照getViewTreeObserver()
以查看更多信息。
?
內(nèi)部類
interface ???????? ViewTreeObserver.OnGlobalFocusChangeListener????????
當(dāng)在一個(gè)視圖樹中的焦點(diǎn)狀態(tài)發(fā)生改變時(shí),所要調(diào)用的回調(diào)函數(shù)的接口類
?
interface ???????? ViewTreeObserver.OnGlobalLayoutListener
當(dāng)在一個(gè)視圖樹中全局布局發(fā)生改變或者視圖樹中的某個(gè)視圖的可視狀態(tài)發(fā)生改變時(shí),所要調(diào)用的回調(diào)函數(shù)的接口類
?
interface ???????? ViewTreeObserver.OnPreDrawListener
當(dāng)一個(gè)視圖樹將要繪制時(shí),所要調(diào)用的回調(diào)函數(shù)的接口類
?
interface ???????? ViewTreeObserver.OnScrollChangedListener
當(dāng)一個(gè)視圖樹中的一些組件發(fā)生滾動(dòng)時(shí),所要調(diào)用的回調(diào)函數(shù)的接口類
?
interface ???????? ViewTreeObserver.OnTouchModeChangeListener
當(dāng)一個(gè)視圖樹的觸摸模式發(fā)生改變時(shí),所要調(diào)用的回調(diào)函數(shù)的接口類
?
公共方法
public void addOnGlobalFocusChangeListener (ViewTreeObserver.OnGlobalFocusChangeListener listener)
注冊一個(gè)回調(diào)函數(shù),當(dāng)在一個(gè)視圖樹中的焦點(diǎn)狀態(tài)發(fā)生改變時(shí)調(diào)用這個(gè)回調(diào)函數(shù)。
參數(shù)
??????????????????????????? listener??? 將要被添加的回調(diào)函數(shù)
?????????????????? 異常
??????????????????????????? IllegalStateException?????? 如果isAlive() 返回false
???????????????????????????
public void addOnGlobalLayoutListener (ViewTreeObserver.OnGlobalLayoutListener listener)
注冊一個(gè)回調(diào)函數(shù),當(dāng)在一個(gè)視圖樹中全局布局發(fā)生改變或者視圖樹中的某個(gè)視圖的可視狀態(tài)發(fā)生改變時(shí)調(diào)用這個(gè)回調(diào)函數(shù)。
參數(shù)
??????????????????????????? listener??? 將要被添加的回調(diào)函數(shù)
?????????????????? 異常
??????????????????????????? IllegalStateException?????? 如果isAlive() 返回false
??????????????????
public void addOnPreDrawListener (ViewTreeObserver.OnPreDrawListener listener)
注冊一個(gè)回調(diào)函數(shù),當(dāng)一個(gè)視圖樹將要繪制時(shí)調(diào)用這個(gè)回調(diào)函數(shù)。
參數(shù)
??????????????????????????? listener??? 將要被添加的回調(diào)函數(shù)
異常
??????????????????????????? IllegalStateException?????? 如果isAlive() 返回false
???????????????????????????
public void addOnScrollChangedListener (ViewTreeObserver.OnScrollChangedListener listener)?????
注冊一個(gè)回調(diào)函數(shù),當(dāng)一個(gè)視圖發(fā)生滾動(dòng)時(shí)調(diào)用這個(gè)回調(diào)函數(shù)。
參數(shù)
??????????????????????????? listener??? 將要被添加的回調(diào)函數(shù)
異常
??????????????????????????? IllegalStateException?????? 如果isAlive() 返回false
???????????????????????????
public void addOnTouchModeChangeListener (ViewTreeObserver.OnTouchModeChangeListener listener)
注冊一個(gè)回調(diào)函數(shù),當(dāng)一個(gè)觸摸模式發(fā)生改變時(shí)調(diào)用這個(gè)回調(diào)函數(shù)。
參數(shù)
??????????????????????????? listener??? 將要被添加的回調(diào)函數(shù)
?????????????????? 異常
??????????????????????????? IllegalStateException?????? 如果isAlive() 返回false
?
public final void dispatchOnGlobalLayout ()
當(dāng)整個(gè)布局發(fā)生改變時(shí)通知相應(yīng)的注冊監(jiān)聽器。如果你強(qiáng)制對視圖布局或者在一個(gè)沒有附加到一個(gè)窗口的視圖的層次結(jié)構(gòu)或者在GONE狀態(tài)下,它可以被手動(dòng)的調(diào)用
???????????????????????????
public final boolean dispatchOnPreDraw ()
當(dāng)一個(gè)視圖樹將要繪制時(shí)通知相應(yīng)的注冊監(jiān)聽器。如果這個(gè)監(jiān)聽器返回true,則這個(gè)繪制將被取消并重新計(jì)劃。如果你強(qiáng)制對視圖布局或者在一個(gè)沒有附加到一個(gè)窗口的視圖的層次結(jié)構(gòu)或者在一個(gè)GONE狀態(tài)下,它可以被手動(dòng)的調(diào)用
?????????????????? 返回值
??????????????????????????? 當(dāng)前繪制能夠取消并重新計(jì)劃則返回true,否則返回false。
????????
public boolean isAlive ()
指示當(dāng)前的ViewTreeObserver是否可用(alive)。當(dāng)observer不可用時(shí),任何方法的調(diào)用(除了這個(gè)方法)都將拋出一個(gè)異常。如果一個(gè)應(yīng)用程序保持和ViewTreeObserver一個(gè)歷時(shí)較長的引用,它應(yīng)該總是需要在調(diào)用別的方法之前去檢測這個(gè)方法的返回值。
?????????????????? 返回值
??????????????????????????? 但這個(gè)對象可用則返回true,否則返回false?????????????
?
public void removeGlobalOnLayoutListener (ViewTreeObserver.OnGlobalLayoutListener victim)
移除之前已經(jīng)注冊的全局布局回調(diào)函數(shù)。
參數(shù)
??????????????????????????? victim 將要被移除的回調(diào)函數(shù)
?????????????????? 異常
??????????????????????????? IllegalStateException?????? 如果isAlive() 返回false????????
?
public void removeOnGlobalFocusChangeListener (ViewTreeObserver.OnGlobalFocusChangeListener victim)
移除之前已經(jīng)注冊的焦點(diǎn)改變回調(diào)函數(shù)。
參數(shù)
??????????????????????????? victim 將要被移除的回調(diào)函數(shù)
?????????????????? 異常
??????????????????????????? IllegalStateException?????? 如果isAlive() 返回false
???????????????????????????
public void removeOnPreDrawListener (ViewTreeObserver.OnPreDrawListener victim)
移除之前已經(jīng)注冊的預(yù)繪制回調(diào)函數(shù)。
參數(shù)
??????????????????????????? victim 將要被移除的回調(diào)函數(shù)
?????????????????? 異常
??????????????????????????? IllegalStateException?????? 如果isAlive() 返回false????????
?
public void removeOnScrollChangedListener (ViewTreeObserver.OnScrollChangedListener victim)
移除之前已經(jīng)注冊的滾動(dòng)改變回調(diào)函數(shù)。
參數(shù)
??????????????????????????? victim 將要被移除的回調(diào)函數(shù)
?????????????????? 異常
??????????????????????????? IllegalStateException?????? 如果isAlive() 返回false????????
?
public void removeOnTouchModeChangeListener (ViewTreeObserver.OnTouchModeChangeListener victim)
移除之前已經(jīng)注冊的觸摸模式改變回調(diào)函數(shù)
參數(shù)
??????????????????????????? victim 將要被移除的回調(diào)函數(shù)
?????????????????? 異常
??????????????????????????? IllegalStateException?????? 如果isAlive() 返回false????????
?
補(bǔ)充
文章鏈接
?Android的選擇及文字顏色