2012-02-13 43 views
0

是否有可能攔截android中的屏幕更新?在android中攔截屏幕更新

我實現了一個自定義的LinearLayout覆蓋了onDraw()方法,但只有當我不點擊子元素而是在其他地方時纔會調用它。

E.g.當我在這個視圖組中有一個按鈕,並且我點擊這個按鈕時,onDraw()方法將不會在根級調用。另一方面,如果我觸摸TextView,則將在根級別調用onDraw()。看起來好像有些元素消耗了onDraw()方法,並且不會將它傳遞給父級。除了擴展每個可能的子項並定製實現之外,是否還有另一種方法或事件可以捕獲到根級別的根視圖及其子級的所有更新?

編輯:也許我必須澄清一點。我的目的是每次更改時都要獲取子視圖的位圖。所以例如如果按鈕是子視圖,我想將視圖繪製到位圖(獲取繪圖緩存或手動調用draw()到自定義畫布)。使用例如問題onClickListener是,按鈕狀態,雖然點擊,實際上是「點擊」,我還需要一個圖像的按鈕狀態,它被設置之前和之後被點擊(http://developer.android.com/design/style /touch-feedback.html)。另一個問題是,我不知道存在多少個子視圖,這應該適用於每個可能的創建佈局。所以onClickListeners也是沒有選擇的,除了我會遍歷所有的孩子,並檢查他們是哪種類型。但是不同的州仍然存在問題。

回答

0

不創建onclick聽衆爲根佈局的子佈局。

0

不要爲子佈局創建onClick偵聽器,並讓您的活動實現onClickListener。覆蓋您的活動的onClick方法,您可以處理其中的任何點擊。

public class Acitivity implements OnClickListener 
{ 

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

}