2012-07-10 57 views
0

我有一个名为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); 

回答

0

是的,我想我也遇到过类似的东西固定它。 在我的应用程序中,我有一个带有图像源和叠加层的FrameView。在我的Android 4.0.3设备上它看起来很好,但对于2.3.x设备(或更早版本),它们在设置为可见时不会显示。

我到目前为止唯一的解决方案是未在XML文件中设置视图隐形并在布局膨胀后立即将它们隐藏(或消失)。之后,一切似乎都很好。

+0

感谢您的帮助。我认为这会起作用,但我遇到了麻烦。检查我的更新 – SubThermal 2012-07-10 11:16:26

+0

setContentView()运行在不同的线程?看起来好像gameView drawables在我的游戏循环的前几次迭代之后才被显示出来。我试图找出一种方法来确保在将视图设置为隐形之前将布局完全充气 – SubThermal 2012-07-11 01:21:58

+0

不,setContentView(...)不会在单独的线程中运行,并且只要布局正在运行充气。您应该能够在setContentView(...)之后直接设置可见性(View.GONE)。 – 2012-07-11 06:41:49

相关问题