我怎样才能知道onDraw何时完成?

时间:2011-08-02 15:40:37

标签: android view

如何查看onDraw of View的完成时间?

谢谢!

3 个答案:

答案 0 :(得分:3)

我不知道你最终想要实现什么,但是如果你需要在Activity完成绘图后运行一些逻辑,那么你可以打电话给View.post(Runnable)然后把你的里面的逻辑。一旦达到onDraw中的代码,可能会发生Runnable,因为它会将Runnable放在邮件队列中。

答案 1 :(得分:2)

在View类中放置一个布尔成员,并在调用onDraw时将其设置为true(如果您只是想测试View已绘制)。

或者如果你想要某种后期“事件”调用来执行一个新线程 - 只需将它放在onDraw的末尾。

答案 2 :(得分:0)

另一个建议是如何做到的:

public class FVRTraceAbleListView extends ListView {

ListViewListener listener;


public interface ListViewListener {
    void onPostDraw();
}

public FVRTraceAbleListView(Context context) {
    super(context);
}

public FVRTraceAbleListView(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public FVRTraceAbleListView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
}

@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public FVRTraceAbleListView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
    super(context, attrs, defStyleAttr, defStyleRes);
}


public void setListener(ListViewListener listener) {
    this.listener = listener;
}

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);


    if (listener != null) {
        listener.onPostDraw();
    }
}

}