Android 如何判断一个View重绘或加载完成?

应该会有个监听函数吧? 看不懂英文 查不了API。。
2024-12-02 11:12:15
推荐回答(4个)
回答(1):

1、view重绘时回调(即监听函数,当view重绘完成自动动用,需要向view的观察者添加监听器)。格式:

view.getViewTreeObserver().addOnDrawListener(new OnDrawListener() {     

@Override

public void onDraw() {

// TODO Auto-generated method stub

}

});

2、view加载完成时回调(当view加载完成自动动用,需要向view的观察者添加监听器)。格式:

view.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

@Override

public void onGlobalLayout() {

// TODO Auto-generated method stub 

}

});

扩展资料:

两种方式刷新:

1、主线程可以直接调用Invalidate()方法刷新

2、子线程可以直接调用postInvalidate()方法刷新。

API的描述 : Invalidatethe whole view. If the view is visible, onDraw(Canvas) will be called at somepoint in the future. This must be called from a UI thread. To call from anon-UI thread, call postInvalidate().。

API的描述译文:当Invalidate()被调用的时候,View的OnDraw()就会被调用,Invalidate()必须是在UI线程中被调用,如果在新线程中更新视图的就调用postInvalidate()。

参考资料来源:百度百科-Android高级编程

参考资料来源:百度百科-activity (Android组件中最重要的四大组件之一)

回答(2):

可以设置这个回调函数

//view重绘时回调
view.getViewTreeObserver().addOnDrawListener(new OnDrawListener() {
@Override
public void onDraw() {
// TODO Auto-generated method stub

}
});
//view加载完成时回调
view.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// TODO Auto-generated method stub

}
});

回答(3):

你的目的是想等绘制完了获取它的宽高吧,还有其他方法的

回答(4):

onfinishInflate 重绘可以在ondraw里