2017-03-14 24 views
8

私はビデオを表示したい場所にIonicプロジェクトを持ち、その上にコードバーのコンテンツWebViewがあります。私が使用するプラグインで、ビデオ・ビューの上に透明WebViewを持っている:私は、Android上でこれをテストしているandroid transparent WebView on VideoView

FrameLayout containerView = (FrameLayout) cordova.getActivity().findViewById(1); 

if (containerView == null) { 
    containerView = new FrameLayout(cordova.getActivity().getApplicationContext()); 
    containerView.setId(1); 
    containerView.setBackgroundColor(Color.BLACK); 

    FrameLayout.LayoutParams containerLayoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT); 
    cordova.getActivity().addContentView(containerView, containerLayoutParams); 

    videoView = new VideoView(cordova.getActivity()); 
    videoView.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT)); 
    containerView.addView(videoView); 

    MediaPlayer player = new MediaPlayer(); 
    player.setOnPreparedListener(this); 
    player.setOnCompletionListener(this); 
    player.setOnErrorListener(this); 

    final SurfaceHolder holder = videoView.getHolder(); 
    holder.setKeepScreenOn(true); 
    holder.addCallback(new SurfaceHolder.Callback() { 
    @Override 
    public void surfaceCreated(SurfaceHolder holder) { 
     player.setDisplay(holder); 
     try { 
     player.prepare(); 
     } catch (Exception e) { 
     e.printStackTrace(); 
     } 
    } 
    @Override 
    public void surfaceDestroyed(SurfaceHolder holder) { 
     player.release(); 
    } 
    @Override 
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {} 
    }); 
} 

webView.getView().setBackgroundColor(0x00000000); 
((ViewGroup) webView.getView()).bringToFront(); 

VideoViewは、このようなFrameLayoutに初期化され、追加されます4.4.2とそれは素晴らしい動作します。私はAndroid 5.1.1でそれをテストし、ビデオ再生中はWebViewは見えません。しかし、もし私がそれを調べて<body>をホバーすると(画面にはオーバーレイが青色で表示されます)、htmlコンテンツ内の要素が表示されます。また、画面に触れると、コンテンツが突然表示されます。だから、WebViewとのやりとりがないときはレンダリングの問題だと思われますが、触れたり、何らかのトリガーを受け取ったりするとすぐに表示されます。

私はまた、横断歩道を使用してみましたが、それはまだ4.2.2に完全に正常動作しますが、5.1.1でアプリを起動したときのみ動作し、画面も

に触れたときに最初の相互作用の後に、それが唯一の作品<preference name="BackgroundColor" value="0xff000000"/>を​​3210に設定しても、動作は変わりません。

編集1: 私はそれでいくつかの透明テキストをdiv要素を追加して、その上に、単純な無限のアニメーションを入れて(ちょうど.9から1に不透明度を変更したこと)、およびWebView内の要素を出来上がりが今表示されました再生時にビデオの上に表示されます。 WebViewのコンテンツが「点滅」することがあるが、うまく機能するため完璧ではない。まだ何の手掛かりがありません

答えて

-1

以下のコードを置き換えてください。

webView.setBackgroundColor(Color.TRANSPARENT); 

あなたは、ビデオ・ビューの上のWebViewを追加 使用アプリケーションコンテンツのレイアウトと以下のようにそれにWebViewのを追加したい場合。

FramlayoutLayout layout = (FramlayoutLayout)cordova.getActivity() findViewById(android.R.id.content); 
layout.addview(your webview) 
+0

'Color.TRANSPARENT'は' 0x00000000'と同じですが、単に '0'を意味します。私はあなたが 'layout.addview(あなたのwebview)'によって何を意味しているのか分かりません。私はデフォルトのコードバ 'WebView'を使用しています。カスタムコンテンツではなく、メインコンテンツビューにすでに追加されています。これがどう変わるか – Guillaume

関連する問題