0

Androidで画面の更新を傍受することは可能ですか?

カスタムLinearLayoutを実装してonDraw()メソッドを上書きしましたが、子要素をクリックせずに別の場所をクリックした場合にのみ呼び出されます。

たとえば、このビューグループにボタンがあり、このボタンをクリックすると、onDraw()ルートレベルでメソッドが呼び出されません。一方、TextViewをタッチするonDraw()と、ルートレベルで呼び出されます。一部の要素がonDraw()メソッドを消費し、それを親に渡さないようです。ルートビューとその子のすべての更新をルートレベルで取得するためにキャッチできる別のメソッドまたはイベントはありますか?ただし、可能な各子を拡張してカスタム実装を行うことを除きますか?

編集:多分私はそれを少し明確にする必要があります。私の目的は、子ビューが変更されるたびに、子ビューのビットマップを取得することです。たとえば、ボタンが子ビューの場合、ビューをビットマップに描画します(描画キャッシュを取得するか、カスタムキャンバスに手動でdraw()を呼び出します)。たとえばonClickListenerを使用する場合の問題は、ボタンの状態がクリックされている間、実際には「クリック」されることです。クリックの前後に設定されるボタンの状態の画像も必要です(http://developer.android。 com / design / style / touch-feedback.html)。もう1つの問題は、どの子ビューといくつの子ビューが存在するかわからないことです。これは、作成されたすべての可能なレイアウトで機能するはずです。したがって、onClickListenersもオプションではありません。ただし、すべての子を反復処理して、それらがどのタイプであるかを確認する場合を除きます。しかし、それでもさまざまな状態に問題があります。

4

2 に答える 2

0

ルートレイアウトの子レイアウト用のonclickリスナーを作成しないでください。

于 2012-02-13T14:20:24.817 に答える
0

子レイアウトの onClick リスナーを作成せず、アクティビティに onClickListener を実装させます。アクティビティの onClick メソッドをオーバーライドすると、そこでクリックを処理できます。

public class Acitivity implements OnClickListener
{

    @Override
    public void onClick(View v) 
    {
          //Handle clicks here
    }

}
于 2012-02-13T15:43:48.817 に答える