Mic*_*ick 15 android android-canvas
我有一个具有以下视图结构的游戏应用程序.首先,我有一个空的FrameLayout,如下所示:
FrameLayout game_frame_layout = new FrameLayout(getApplicationContext());
Run Code Online (Sandbox Code Playgroud)
然后我像这样添加两个视图:
game_frame_layout.addView(customView);
game_frame_layout.addView(butView);
Run Code Online (Sandbox Code Playgroud)
customView用于显示各种移动的游戏图形,而butView在移动的图形上显示一些ImageButtons.customView是一个扩展SurfaceView的类CustomView的实例.
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();
}
}
Run Code Online (Sandbox Code Playgroud)
这条线holder.setFormat(PixelFormat.RGBA_8888);是最近添加的(见这里).没有那条线,我的动画图形看起来是一种颜色太少的格式(通过实验我推断它是"RGB_565"),所以我得到了一些条带文物.当我添加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我只看到与完全黑色背景相对应的按钮.日志中没有迹象表明程序已崩溃.
有任何想法吗?
可能并非所有 Android 设备都支持 32/24 位像素格式,因此这就是 565 始终可以工作而 888 可能会失败的原因。您可能会尝试了解硬件加速是否存在问题并尝试禁用它
| 归档时间: |
|
| 查看次数: |
3414 次 |
| 最近记录: |