出于测试目的,我需要在屏幕上获取所有可见视图的坐标.但是,在检查输出时,似乎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,您可以了解布局何时完成绘制,然后运行所需的代码
总结以上是内存溢出为你收集整理的java – Android等待UI线程全部内容,希望文章能够帮你解决java – Android等待UI线程所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)