GLビューの上に透明なHTMLオーバーレイを配置しようとしましたが、GLビューを覆う黒いちらつきが常にあります。このちらつきを取り除こうとする数日後、私はこの回避策が私には受け入れられるものであることに気付きました(ただし、Androidの場合は残念です)。
問題は、素晴らしいCSSアニメーションのためにハードウェアアクセラレーションが必要なため、私にwebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
は選択肢がないということです。
トリックはWebView
、GLビューとHTMLオーバーレイの間に2番目(空)を置くことでした。これ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);
}
}