- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在我要求 View 失效后,我希望在 View 重绘完成后收到通知。如 this answer 中所述, invalidate()
方法不会立即调用 View 的 onDraw()
UI,而是在消息队列中安排重绘,当主线程运行时执行虚度。
我想显示一个进度对话框,进行一些 UI 修改,然后在正确绘制 View 后关闭该对话框。有什么技巧可以让我知道什么时候绘制了 View 吗?也许通过子类化 View ,覆盖 onDraw()
方法?
最佳答案
我认为您自己回答了您的问题。为什么不:
public class DrawListenerView extends View{
private Callback callback;
public DrawListenerView(Callback callback){
this.callback = callback;
}
@Override
protected void onDraw (Canvas canvas){
super.onDraw(canvas);
//add your method here you want to call
//Or use a Callback-pattern
callback.finish();
}
}
public interface Callback(){
public void finish();
}
如果您查看源代码:
上面的评论说
Invalidate the whole view. If the view is visible, onDraw(android.graphics.Canvas) will >be called at some point in the future. This must be called from a UI thread. To call from >a non-UI thread, call postInvalidate().
试一试:)
编辑:您可能想使用回调来处理此问题。
关于Android - 在 invalidate() 上重绘后的监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13779860/
我是一名优秀的程序员,十分优秀!