Я пытался наложить прозрачный HTML-оверлей поверх моего вида GL, но он всегда мерцает черным, что покрывает мой вид GL. После нескольких дней, пытаясь избавиться от этого мерцания, я нашел этот обходной путь, который является приемлемым для меня (но позор для Android).
Проблема в том, что мне нужно аппаратное ускорение для моих хороших CSS-анимаций, и это webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
не вариант для меня.
Хитрость заключалась в том, чтобы поместить второй (пустой) WebView
между моим видом GL и оверлеем HTML. Это dummyWebView
я сказал для рендеринга в режиме SW, и теперь мои оверлеи HTML сглаживаются в HW и больше не мерцают черным.
Я не знаю, работает ли это на других устройствах, кроме My Acer Iconia A700, но я надеюсь, что смогу помочь кому-то с этим.
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);
}
}