我想通過layout.addView(view)方法動態添加一個新視圖到佈局。新的視圖不應該是可見的,但我希望它的顯示列表被創建,因此當我決定顯示它時(通過動畫,例如淡入),它不必重繪(調用onDraw方法)本身。當通過addView方法動態添加視圖時,onDraw會調用兩次
我運行此代碼:
customView = new CustomView(this.getContext());
customView .setAlpha(0.0f);
this.addView(customView); // 'this' is RelativeLayout instance in this case
的onDraw方法被調用爲customView,一切都很好。但是,當我更改佈局中的任何內容(按下按鈕,滾動,導致佈局無效的任何內容)時,我的customView的onDraw方法將被第二次調用。之後,如果我不使自定義視圖失效(正確的行爲),則不會再調用它。
我不知道爲什麼Android的行爲如此。我希望它創建customView,調用onDraw,爲它創建一個顯示列表,並且不會再調用onDraw,直到我使視圖無效。總之,onDraw應該被調用一次。
而且它與customView的初始隱形無關,如果alpha設置爲0.5f,行爲是相同的。
我的問題是,如何使Android調用onDraw一次?
如果Android真的需要兩次調用onDraw,那麼我應該怎麼做才能在this.addView(view)之後的代碼中執行它?沒有設置任何計時器,因爲這將是完全醜陋的。
對不起,但我認爲你的解決方案沒有意義(顯然這是行不通的)。你明白我的問題嗎?帶有this.addView的代碼被調用一次,只有onDraw被調用兩次。 – r00dY
然後我完全誤解了你的問題..你可以試着讓它更清楚嗎? – crazyPixel
告訴我哪一部分你不明白,我會盡力解釋它更好:) – r00dY