【发布时间】:2014-01-13 13:51:19
【问题描述】:
我有一个具有以下视图结构的游戏应用程序。首先我有一个像这样的空 FrameLayout:
FrameLayout game_frame_layout = new FrameLayout(getApplicationContext());
然后我像这样添加两个视图:
game_frame_layout.addView(customView);
game_frame_layout.addView(butView);
customView 用于显示各种移动游戏图形,而 butView 在移动图形顶部显示一些 ImageButton。 customView 是类 CustomView 的实例,它扩展了 SurfaceView。
CustomView 包含以下代码
void updateView()
{
final SurfaceHolder holder = getHolder();
holder.setFormat(PixelFormat.RGBA_8888);
try
{
Canvas canvas = holder.lockCanvas();
if (canvas != null)
{
onDraw(canvas);
holder.unlockCanvasAndPost(canvas);
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
holder.setFormat(PixelFormat.RGBA_8888); 行是最近添加的(请参阅here)。没有那条线,我的动画图形似乎是颜色太少的格式(通过实验,我推断它是“RGB_565”),所以我得到了一些banding 伪像。当我添加 setFormat 行时,图形在我的三星 Galaxy Tab 10.1 (Android 3.1) 上完美显示(没有条纹)......但在其他三台设备上:三星 GT-l9100 (4.1.2)、Nexus 7 ME370T 4.4 .2 和 HTC One X 4.2.2 我只在全黑背景下看到与 butView 相对应的按钮。日志中没有迹象表明程序已崩溃。
有什么想法吗?
【问题讨论】:
-
您是否需要该表面的透明度,或者您也可以试一试
PixelFormat.RGB_888? -
你的按钮还在你的“黑色”移动图形上移动吗?