Я намагався нанести прозорий HTML-накладку на мій погляд GL, але він завжди чорним мерехтінням, який покриває мій погляд GL. Після декількох днів, намагаючись позбутися цього мерехтіння, я знайшов таке рішення, яке для мене є прийнятним (але прикро для андроїда).
Проблема полягає в тому, що мені потрібне апаратне прискорення для моїх приємних анімацій 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);
}
}