我试图在我的GL视图上放置一个透明的HTML覆盖层,但是它始终闪烁黑色,覆盖了我的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);
}
}