真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android在OnCreate中獲取控件的寬度和高度-創(chuàng)新互聯(lián)

在Android中,有時需要對控件進行測量,得到的控件寬度和高度可以用來做一些計算。在需要自適應屏幕的情況下,這種計算就顯得特別重要。另一方便,由于需求的原因,希望一進入界面后,就能得到控件的寬度和高度。

創(chuàng)新互聯(lián)是一家專業(yè)從事做網(wǎng)站、成都網(wǎng)站建設的網(wǎng)絡公司。作為專業(yè)網(wǎng)站設計公司,創(chuàng)新互聯(lián)依托的技術實力、以及多年的網(wǎng)站運營經(jīng)驗,為您提供專業(yè)的成都網(wǎng)站建設、全網(wǎng)營銷推廣及網(wǎng)站設計開發(fā)服務!

    可惜的是,根據(jù)驗證,利用網(wǎng)上轉(zhuǎn)載的那些方法在OnCreate函數(shù)中獲取到的仍然是0(希望搞技術的能自己驗證過再轉(zhuǎn)載),例如Measure方法之后調(diào)用getMeasuredWidth的值還是0。

    原因是因為當OnCreate函數(shù)發(fā)生時,只是提供了數(shù)據(jù)初始化的機會,此時還沒有正式繪制圖形。而繪制圖形在OnDraw中進行,此時計算又顯得太晚。容易想到的辦法是:希望能在程序剛剛測量好某個指定控件后,拿到它的寬度和高度立刻進行計算或數(shù)據(jù)初始化。這就需要有一個方法來監(jiān)聽到這個事件的發(fā)生,幸好Android提供了這樣的機制,利用View類中的getViewTreeObserver方法,可以獲取到指定View的觀察者,在繪制控件 前的一剎那進行回調(diào),這樣速度上又不耽誤,得到的數(shù)據(jù)由是準確的,但此方法在之后可能會被反復調(diào)用,因此需要加入限制,普通需求下,只計算一次就夠了,代碼如下(此代碼在OnCreate回調(diào)函數(shù)中驗證通過,實時上,因為它是監(jiān)聽器,所以發(fā)生事件時已經(jīng)和OnCreate無關了):

final View view =  findViewById(R.id.layout);
ViewTreeObserver vto = view.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener(){
    public boolean onPreDraw(){
        if (hasMeasured == false){                    
            int height = view.getMeasuredHeight();                    
            int width = view.getMeasuredWidth();
            //獲取到寬度和高度后,可用于計算                                        
            hasMeasured = true;                
        }                
        return true; //返回true為可用狀態(tài)            
   }        
});

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。


分享標題:Android在OnCreate中獲取控件的寬度和高度-創(chuàng)新互聯(lián)
文章地址:http://weahome.cn/article/djgepg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部