2011-08-02 9 views

答えて

3

最終的に達成しようとしていることはわかりませんが、Activityで描画が完了したらロジックを実行する必要がある場合は、View.post(Runnable)と呼んでロジックを配置してください。 RunnableのコードがメッセージキューにRunnableを入れてから、Runnableのコードに達すると、onDrawが発生している可能性があります。

2

ブール値のメンバーをViewクラスに配置し、onDrawが呼び出されたときにtrueに設定します(ビューが描画されたことを単純にテストできるようにしたい場合)。

また、新しいスレッドを実行するための描画後の「イベント」呼び出しが必要な場合は、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(); 
    } 
} 

}

関連する問題