簡體   English   中英

Android等待UI線程

[英]Android waiting for UI Thread

出於測試目的,我需要在屏幕上獲取所有可見視圖的坐標。 但是,在檢查輸出時,似乎UI線程尚未完成繪制/定位/應用設置到所有視圖。 一些視圖是0x0像素,而它們應該是(並且它們在仿真器和物理設備上)可見。 一些底部對齊的按鈕位於樓梯等處。

問:我如何等待UI線程完成繪圖(或者至少等待一秒鍾,這應該綽綽有余),所以所有可見視圖的坐標都是准確的?

我懷疑它與Threads有關,但我找不到任何確定的答案。 到目前為止,我沒有任何自我聲明的線程。

編輯:我使用onBackPressed使一堆視圖可見,然后在xml中捕獲它,使之前的視圖不可見,其他視圖可見,在xml中捕獲,等等。我通過幾個不同的視圖組合和“xml-screenshot”迭代“每個組合。

LinearLayout layout = (LinearLayout)findViewById(R.id.YOUD VIEW ID);
ViewTreeObserver vto = layout.getViewTreeObserver(); 
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
    @Override 
    public void onGlobalLayout() { 
        this.layout.getViewTreeObserver().removeGlobalOnLayoutListener(this); 
        int width  = layout.getMeasuredWidth();
        int height = layout.getMeasuredHeight(); 

    } 
});

您需要調整此選項以使用布局,並將ID添加到基本父布局。

通過使用ViewTreeObserver ,您可以了解布局何時完成繪制,然后運行所需的代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM