日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android -- onWindowFocusChanged

發(fā)布時(shí)間:2023/12/31 Android 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android -- onWindowFocusChanged 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Android中獲取手機(jī)屏幕的高度和寬度,我們知道在onCreate方法中獲取到的值都是為0的,有人說可以在onClick方法中獲取值,這個(gè)也是個(gè)方法 ,但在onWindowFocusChanged方法中可以直接獲取到,而且有的時(shí)候場景的需要,就不得不在Activity渲染完成后立馬獲取值,這時(shí)候onWindowFocusChanged()方法就用到實(shí)處了,類似的有PopupWindow的顯示,如果在onCreate方法中執(zhí)行的話,會報(bào)沒有token的異常,就是因?yàn)锳ctivity沒有渲染成功.

onWindowFocusChanged():當(dāng)Activity的當(dāng)前Window獲得或失去焦點(diǎn)時(shí)會被回調(diào)此方法。當(dāng)回調(diào)了這個(gè)方法時(shí)表示Activity是完全對用戶可見的(只是可見,還一片黑呼呼的,有待draw..)。當(dāng)對話框彈起/消失及Activity新創(chuàng)建及回退等都會調(diào)用此方法。

相比之下,onResume()方法更多的是指Activity進(jìn)入了可見的狀態(tài),但只是狀態(tài),并不是真正的界面構(gòu)建完成了。

demo???????????????????????????????????????????????????????????????????????????????????

一個(gè)Activity只顯示一個(gè)TestImageView,并重寫TestImageView下的onMeasure()、onLayout()、onDraw()方法,并對其設(shè)置onGlobalLayout()監(jiān)聽,觀察這幾個(gè)方法與Activity的onResume()、onWindowFocusChanged()的調(diào)用順序,如下:

?

ClipDrawableActivity onCreate() time=1376920332125 ClipDrawableActivity onResume() TestImageView.width=0 time=1376920332149 MainActivity onWindowFocusChanged hasFocus=false ClipDrawableActivity TestImageView onMeasure() ClipDrawableActivity TestImageView onMeasure() ClipDrawableActivity TestImageView onMeasure() ClipDrawableActivity TestImageView onMeasure() ClipDrawableActivity TestImageView onLayout() ClipDrawableActivity onGlobalLayout() TestImageView.width=736 time=1376920332185 ClipDrawableActivity onWindowFocusChanged() hasFocus=true TestImageView.width=736 time=1376920332187 ClipDrawableActivity TestImageView onMeasure() ClipDrawableActivity TestImageView onMeasure() ClipDrawableActivity TestImageView onLayout() ClipDrawableActivity onGlobalLayout() TestImageView.width=736 time=1376920332194 ClipDrawableActivity TestImageView onDraw()

?

Activity.oncreate()→Activity.onResume()→TestImageView.onMeasure()→TestImageView.onLayout()→onGlobalLayoutListener()→Activity.onWidnowFocusChanged()→.....→TextImageView.onDraw()

總結(jié)???????????????????????????????????????????????????????????????????????????????????

至此,如果需要獲取某個(gè)View的寬高,可以在onWindowFocusChanged()處直接獲取即可,這比對某個(gè)view設(shè)置onGlobalLayoutListener的方式來獲取方便了許此。又比如,對于需要讀取本地文件記錄來判斷是否是第一次打開界面去提示文本圖片的,也可以在此方法中去讀取然后再顯示在ui上。

我是天王蓋地虎的分割線 ? ? ? ? ? ??




本文轉(zhuǎn)自我愛物聯(lián)網(wǎng)博客園博客,原文鏈接:http://www.cnblogs.com/yydcdut/p/4124966.html,如需轉(zhuǎn)載請自行聯(lián)系原作者

總結(jié)

以上是生活随笔為你收集整理的Android -- onWindowFocusChanged的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。