我有一個名爲GameView的自定義視圖,其中繪製了我的遊戲。還有一個稱爲PausedView的子視圖,可用作GameView的疊加層。當遊戲暫停時,PausedView被設置爲可見,並且屏幕獲得50%的不透明黑色覆蓋層和4個按鈕。視圖僅在1個設備上的按鈕和textView上繪製,但不在其他設備上
我的問題是,在我的LG Optimus S(Android 2.3.3)上沒有出現這些按鈕。他們在那裏,你可以點擊,但他們沒有顯示。此外,黑色疊加層僅出現在GameView中的按鈕和文字瀏覽中。如果我離開,然後回到活動,這一切都顯得很正常。
此錯誤不會發生在我的摩托羅拉Xoom(Android 3.2.1)或我的摩托羅拉Droid(Android 2.2.3)上。直到最近,它也沒有發生在我的Optimus上(我想我得到服務更新的時候)。
截圖什麼我談論的:
http://postimage.org/image/qjhiho3ed/
http://postimage.org/image/9k8k2es6t/
我試過在GameView和PausedView調用postInvalidate(),但它並沒有幫助。
有沒有人遇到過這樣的事情?
更新: 我試圖去除隱形從XML設置和使用此代碼,但它仍然是行不通的。我可以通過在視圖創建後很長時間內調用setVisibility來糾正它,但我無法在創建過程中找到調用這些函數的正確位置。
// Use XML layout
setContentView(R.layout.main);
// define the views of this activity
gameView = (GameView)findViewById(R.id.gameView);
pausedView = findViewById(R.id.pausedView);
victoryView = findViewById(R.id.victory);
pausedView.setVisibility(View.INVISIBLE);
victoryView.setVisibility(View.INVISIBLE);
更新:
使用
pausedView.setVisibility(View.GONE);
victoryView.setVisibility(View.GONE);
感謝您的幫助。我認爲這會起作用,但我遇到了麻煩。檢查我的更新 – SubThermal 2012-07-10 11:16:26
setContentView()運行在不同的線程?看起來好像gameView drawables在我的遊戲循環的前幾次迭代之後才被顯示出來。我試圖找出一種方法來確保在將視圖設置爲隱形之前將佈局完全充氣 – SubThermal 2012-07-11 01:21:58
不,setContentView(...)不會在單獨的線程中運行,並且只要佈局正在運行充氣。您應該能夠在setContentView(...)之後直接設置可見性(View.GONE)。 – 2012-07-11 06:41:49