您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
安卓中正确的获取异步的ui(view)宽高(布局渲染监听)
发布时间:2021-07-17 17:22:24编辑:雪饮阅读()
在前端开发中ui中的一些元素的宽高的获取也是经常使用的,像是html中或者安卓中的,而html中异步获取,记忆里好像不是很优雅的样子。
![安卓异步获取view宽高.jpg](/d/file/manshenghuo/chengxurensheng/62699cadd640add33f93cb6b6d30e0c1.jpg)
像是这里这个需求,要求在那个左上角的可拉伸缩放的EditTextView默认是没有显示的,在代码中进行逻辑判断显示的,那么问题就来了,通过代码来显示,之后紧接着就获取它的宽高,则是不能的,因为代码执行速度很快,而ui是异步的,此时ui可能还没有渲染结束。
那么此时直接获取的宽高都将会是0.
那么实现起来其实也不难,就是通过异步监听
ViewTreeObserver vto =videoView_parent_RelativeLayout.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//这里可以获取这个videoView_parent_RelativeLayout的宽高,这里会导致重复监听,所以这里执行removeOnGlobalLayoutListener就可以再次将监听移除
vto.removeOnGlobalLayoutListener(this);
WaterMarkInfoAdd();
}
});
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//这里可以获取这个videoView_parent_RelativeLayout的宽高,这里会导致重复监听,所以这里执行removeOnGlobalLayoutListener就可以再次将监听移除
vto.removeOnGlobalLayoutListener(this);
WaterMarkInfoAdd();
}
});
关键字词:安卓,view,异步,宽高,获取