2011-08-02 63 views

回答

3

我不知道你最終想達到什麼目的,但是如果你需要在Activity中完成繪圖之後運行一些邏輯,那麼你可以調用View.post(Runnable)並把你的邏輯放在那裏。自從將Runnable放入消息隊列後,一旦達到Runnable中的代碼就可能發生。

2

在您的View類中放置一個布爾成員,並在調用onDraw時將其設置爲true(如果您只是想能夠測試View已繪製)。

或者,如果您想要某種後期繪製「事件」調用來執行新線程,只需將它放在onDraw的末尾即可。

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(); 
    } 
} 

}