我有一個具有以下Views視圖結構的遊戲應用程序。首先我有一個空的FrameLayout像這樣:SurfaceHolder.setFormat(PixelFormat.RGBA_8888)在某些設備上失敗,而不是其他設備
FrameLayout game_frame_layout = new FrameLayout(getApplicationContext());
然後我兩個視圖添加到它,像這樣:
game_frame_layout.addView(customView);
game_frame_layout.addView(butView);
的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();
}
}
線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我只看到與黑色背景對應的按鈕。日誌中沒有指示程序崩潰。
任何想法?
您是否需要該表面的透明度,或者您是否還可以給「PixelFormat.RGB_888」一個鏡頭? – tiguchi
你的按鈕還在你的「黑色」移動圖形上移動嗎? –