gpt4 book ai didi

Android - 在 invalidate() 上重绘后的监听器

转载 作者:太空宇宙 更新时间:2023-11-03 12:10:11 37 4
gpt4 key购买 nike

在我要求 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();
}

如果您查看源代码:

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.1_r2/android/view/View.java#View.invalidate%28%29

上面的评论说

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/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com