如何查看onDraw of View的完成时间?
谢谢!
答案 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();
}
}
}