gpt4 book ai didi

android - SurfaceHolder.setFormat(PixelFormat.RGBA_8888) 在某些设备上失败,而在其他设备上失败

转载 作者:可可西里 更新时间:2023-11-01 18:47:30 26 4
gpt4 key购买 nike

我有一个具有以下 View 结构的游戏应用程序。首先,我有一个空的 FrameLayout,如下所示:

FrameLayout game_frame_layout = new FrameLayout(getApplicationContext());

然后我像这样向它添加两个 View :

game_frame_layout.addView(customView);
game_frame_layout.addView(butView);

customView 用于显示各种移动的游戏图形,而 butView 在移动图形的顶部显示一些 ImageButton。 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();
}
}

holder.setFormat(PixelFormat.RGBA_8888); 是最近添加的(参见 here )。没有那条线,我的动画图形似乎是颜色太少的格式(通过实验我推断它是“RGB_565”),所以我得到一些 banding文物。当我添加 setFormat 行时,图形在我的 Samsung Galaxy Tab 10.1 (Android 3.1) 上完美显示(没有 strip )...但在其他三台设备上:Samsung GT-l9100 (4.1.2)、Nexus 7 ME370T 4.4 .2 和 HTC One X 4.2.2 我只看到与 butView 相对应的按钮,背景是全黑的。日志中没有任何迹象表明程序已崩溃。

有什么想法吗?

最佳答案

可能不是所有的 android 设备都支持 32/24 位像素格式,所以这就是为什么 565 总是工作而 888 可能会失败。您可能会尝试了解是否是硬件加速的问题,试图禁用它

关于android - SurfaceHolder.setFormat(PixelFormat.RGBA_8888) 在某些设备上失败,而在其他设备上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21092915/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com