我一直在搜索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);
}
}