Ich habe versucht, ein transparentes HTML-Overlay über meine GL-Ansicht zu legen, aber es flackert immer schwarz, was meine GL-Ansicht abdeckt. Nachdem ich einige Tage lang versucht hatte, dieses Flackern loszuwerden, fand ich diese Problemumgehung, die für mich akzeptabel ist (aber eine Schande für Android).
Das Problem ist, dass ich Hardwarebeschleunigung für meine netten CSS-Animationen benötige und daher webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
für mich keine Option ist.
Der Trick bestand darin, eine Sekunde (leer) WebView
zwischen meine GL-Ansicht und das HTML-Overlay zu setzen. DiesdummyWebView
ich angewiesen, im SW-Modus zu rendern, und jetzt werden meine HTML-Overlays in HW glatt und kein schwarzes Flackern mehr.
Ich weiß nicht, ob dies auf anderen Geräten als My Acer Iconia A700 funktioniert, aber ich hoffe, ich könnte jemandem dabei helfen.
public class MyActivity extends Activity {
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
RelativeLayout layout = new RelativeLayout(getApplication());
setContentView(layout);
MyGlView glView = new MyGlView(this);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
dummyWebView = new WebView(this);
dummyWebView.setLayoutParams(params);
dummyWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
dummyWebView.loadData("", "text/plain", "utf8");
dummyWebView.setBackgroundColor(0x00000000);
webView = new WebView(this);
webView.setLayoutParams(params);
webView.loadUrl("http://10.0.21.254:5984/ui/index.html");
webView.setBackgroundColor(0x00000000);
layout.addView(glView);
layout.addView(dummyWebView);
layout.addView(webView);
}
}