2016-03-30 12 views
9

Sto scrivendo un'applicazione PhoneGap con un plugin personalizzato. Questo plugin genera uno sfondo animato a schermo intero (essenzialmente un video) sul proprio SurfaceView (pensatelo come un video di sfondo). Voglio che la normale webview di phonegap sia in cima a questo plugin, come una sovrapposizione trasparente. Come lo posso fare?Come posso sovrapporre una CordovaWebView di PhoneGap su una visualizzazione nativa in Android?

mio codice corrente:

public void initialize(CordovaInterface cordova, CordovaWebView webView) { 
    final FrameLayout layout = (FrameLayout) webView.getView().getParent(); 
    final Activity activity = cordova.getActivity(); 

    activity.runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      try { 
       // here I insert the surface 
       // that I want to be placed behind the webview 
       activity.setContentView(R.layout.preview); 

       MySurfaceView myView = new MySurfaceView(activity); 
       FrameLayout preview = (FrameLayout) activity.findViewById(R.id.myview); 
       preview.addView(myView); 
      } 
      catch(Exception e) { 
       Log.e(CamCapture.TAG, "failed: " + e.getMessage()); 
      } 

     } 
    }); 
} 

Questa domanda è l'opposto di How can I overlay a native view on top of PhoneGap's CordovaWebView in Android?

+0

Si noti che le versioni correnti di CrossWalk hanno problemi di trasparenza. Questo era parte del mio problema. – brunobg

risposta

2

È possibile farlo mettendo il vostro vista web su vista Madrelingua un parente layout e impostazione seguente proprietà sulla vostra vista web

wv.setWebViewClient(new WebViewClient() { 
      @Override 
      public void onPageFinished(WebView view, String url) { 
       super.onPageFinished(view, url); 
       view.setBackgroundColor(ContextCompat.getColor(context, R.color.transparent)); 
       if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
        view.setLayerType(View.LAYER_TYPE_HARDWARE, null); 
       } else { 
        view.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 
       } 
      } 
     }); 
     wv.setBackgroundResource(android.R.color.transparent); 

Renderà lo sfondo della tua webview trasparente e puoi vedere la tua visualizzazione nativa.

+2

Può essere fatto con un'applicazione Cordova regolare, spostando (o posizionando) la vista Web nel relativo layout (su xml, come)? O ho bisogno di configurare un'applicazione nativa e creare la visualizzazione Web in primo piano? – brunobg