0

我一直在搜索 looooot,但并没有真正找到将 Vimeo 视频嵌入到 Android 应用程序片段中的内容。

答案建议有必要拥有一个 Vimeo Pro 帐户,使用 iframe 或使用一些外部播放器或非官方库等。

由于我对 Android 开发还很陌生,因此我没有设法将任何这些建议实施到可行的解决方案中。

因此,如果有其他人对此不熟悉并希望以最简单的形式在片段中嵌入 vimeo 视频,我想分享我的代码,用于在包含 TextView 和 ImageView 的片段中嵌入 vimeo 视频。ScrollView 是必需的,否则当我旋转它时,我的 imageView 会缩小。

我唯一要注意的是 webview 加载有点慢,所以在短时间内,只显示我的其他视图,因此非常欢迎有关改进和最佳实践的建议。

布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

      <WebView
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:id="@+id/webView"
         android:layout_gravity="center_horizontal" />

       <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginLeft="8dp"
        android:gravity="center"
        android:text="PUT_TEXT"
        android:textSize="20sp"
        android:textStyle="italic"/>

      <ImageView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="bottom"
       android:layout_marginLeft="8dp"
       android:layout_marginRight="8dp"
       android:adjustViewBounds="true"
       android:gravity="bottom"
       android:paddingTop="0dp"
       android:src="@drawable/PUT_IMAGE_HERE"
       app:srcCompat="@drawable/PUT_IMAGE_HERE" />
    </LinearLayout>
</ScrollView>

我的片段

import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class WebViewFragment extends android.support.v4.app.Fragment {

   public WebView webView;

   @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
       super.onViewCreated(view, savedInstanceState);

       webView = (WebView) view.findViewById(R.id.webView);
       webView.setInitialScale(1);
       webView.setWebChromeClient(new WebChromeClient());
       webView.getSettings().setAllowFileAccess(true);
       webView.getSettings().setPluginState(WebSettings.PluginState.ON);
       webView.getSettings().setPluginState(WebSettings.PluginState.ON_DEMAND);
       webView.setWebViewClient(new WebViewClient());
       webView.getSettings().setJavaScriptEnabled(true);
       webView.getSettings().setLoadWithOverviewMode(true);
       webView.getSettings().setUseWideViewPort(true);
       DisplayMetrics displaymetrics = new DisplayMetrics();
       ((WindowManager)getContext()
                   .getSystemService(Context.WINDOW_SERVICE))
                   .getDefaultDisplay()
                   .getMetrics(displaymetrics);

       int height = displaymetrics.heightPixels;
       int width = displaymetrics.widthPixels;
       Log.e("WebView Log", width + "-" + height);
       String data_html = "<!DOCTYPE html><html> <head> <meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"target-densitydpi=high-dpi\" /> <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"> <link rel=\"stylesheet\" media=\"screen and (-webkit-device-pixel-ratio:1.5)\" href=\"hdpi.css\" /></head> <body style=\"background:white;margin:0 0 0 0; padding:0 0 0 0;\"> <iframe style=\"background:white;\" width=' "+width+"' height='"+height/2+"' src=\""+"YOUR VIMEO URL"+"\" frameborder=\"0\"></iframe> </body> </html> ";

       webView.loadDataWithBaseURL("http://vimeo.com", data_html, "text/html", "UTF-8", null);
   }


   @Nullable
   @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.webview_exercise, container, false);      
    }
}
4

0 回答 0