android點滴之ViewTreeObserver

來源:互聯網
上載者:User

一類的基本概念

這是一個註冊監聽視圖樹的觀察者(observer),在視圖樹種全域事件改變時得到通知。這個全域事件不僅還包括整個樹的布局,從繪畫過程開始,觸摸模式的改變等。最常見的用途時通過監聽獲知什麼時候,視圖的寬高值確定了,可以擷取了,以便更改UI。

二類的主要介面:監聽器

interface ViewTreeObserver.OnGlobalFocusChangeListener 當在一個視圖樹中的焦點狀態發生改變時,所要調用的回呼函數的介面類
interface ViewTreeObserver.OnGlobalLayoutListener當在一個視圖樹中全域布局發生改變或者視圖樹中的某個視圖的可視狀態發生改變時,所要調用的回呼函數的介面類
interface ViewTreeObserver.OnPreDrawListener當一個視圖樹將要繪製時,所要調用的回呼函數的介面類
interface ViewTreeObserver.OnScrollChangedListener當一個視圖樹中的一些組件發生滾動時,所要調用的回呼函數的介面類
interface ViewTreeObserver.OnTouchModeChangeListener當一個視圖樹的觸摸模式發生改變時,所要調用的回呼函數的介面類三程式碼範例 1.建立監聽器
   private final ViewTreeObserver.OnGlobalLayoutListener mGlobalLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener() {        @Override        public void onGlobalLayout() {            int width = -1;            int height = -1;                        try {                width = getActivity().getWindow().getDecorView().getWidth();                height = getActivity().getWindow().getDecorView().getHeight();            } catch (Exception e) {                // called too early. so, just skip.            }                        if (width != -1 && mGlobalLayoutWidth != width) {//只有當尺寸真正有了數值,即已經確定了,更新UI才有意義                mGlobalLayoutWidth = width;                updateUI();            } else if (height != -1 && mGlobalLayoutHeight != height) {                mGlobalLayoutHeight = height;                updateUI(); } } };


2.一般在onCreate或者onCreateView中註冊監聽器
mViewTreeObserver = getActivity().getWindow().getDecorView().getViewTreeObserver();        mViewTreeObserver.addOnGlobalLayoutListener(mGlobalLayoutListener);


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.