public class TestVideo extends Activity {
private WebView webview;
private WebChromeClient chromeclient;
private WebViewClient viewclient;
private boolean islandport;
private FrameLayout fullView;
private View existCustomView;
private CustomViewCallback xCustomViewCallback;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.test_video);
webview = (WebView) findViewById(R.id.my_webView);
fullView = (FrameLayout) findViewById(R.id.fullScreen);
WebSettings ws = webview.getSettings();
/**
* setAllowFileAccess 启用或禁止WebView访问文件数据 setBlockNetworkImage 是否显示网络图像
* setBuiltInZoomControls 设置是否支持缩放 setCacheMode 设置缓冲的模式
* setDefaultFontSize 设置默认的字体大小 setDefaultTextEncodingName 设置在解码时使用的默认编码
* setFixedFontFamily 设置固定使用的字体 setJavaSciptEnabled 设置是否支持Javascript
* setLayoutAlgorithm 设置布局方式 setLightTouchEnabled 设置用鼠标激活被选项
* setSupportZoom 设置是否支持变焦
*/
ws.setBuiltInZoomControls(true);// 隐藏缩放按钮
ws.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);// 排版适应屏幕
ws.setUseWideViewPort(true);// 可任意比例缩放
ws.setLoadWithOverviewMode(true);// setUseWideViewPort方法设置webview推荐使用的窗口。setLoadWithOverviewMode方法是设置webview加载的页面的模式。
ws.setSavePassword(true);
ws.setSaveFormData(true);// 保存表单数据
ws.setJavaScriptEnabled(true);
webview.setWebChromeClient(new MyChromeClient());
webview.setWebViewClient(new MyViewClient());
webview.loadUrl("http://www.iqiyi.com/w_19rt1y0fh9.html");
}
public boolean inCustomView() {
return (existCustomView != null);
}
class MyChromeClient extends WebChromeClient {
private Bitmap xdefaltvideo;
private View xprogressvideo;
@Override
// 播放网络视频时全屏会被调用的方法
public void onShowCustomView(View view, WebChromeClient.CustomViewCallback callback) {
if (islandport) {
} else {
}
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
webview.setVisibility(View.GONE);
// 如果一个视图已经存在,那么立刻终止并新建一个
if (existCustomView != null) {
callback.onCustomViewHidden();
return;
}
fullView.addView(view);
existCustomView = view;
xCustomViewCallback = callback;
fullView.setVisibility(View.VISIBLE);
}
@Override
// 视频播放退出全屏会被调用的
public void onHideCustomView() {
if (existCustomView == null)// 不是全屏播放状态
return;
// Hide the custom view.
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
existCustomView.setVisibility(View.GONE);
// Remove the custom view from its container.
fullView.removeView(existCustomView);
existCustomView = null;
fullView.setVisibility(View.GONE);
xCustomViewCallback.onCustomViewHidden();
webview.setVisibility(View.VISIBLE);
// Log.i(LOGTAG, "set it to webVew");
}
// 网页标题
@Override
public void onReceivedTitle(WebView view, String title) {
(testVideo.TestVideo.this).setTitle(title);
}
// @Override
// //当WebView进度改变时更新窗口进度
// public void onProgressChanged(WebView view, int newProgress) {
// (MainActivity.this).getWindow().setFeatureInt(Window.FEATURE_PROGRESS,
// newProgress*100);
// }
}
class MyViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.i("webviewtest", "shouldOverrideUrlLoading: " + url);
return false;
}
}
}
上述方法适合网页内使用video标签可以全屏, 如果使用embed则无法全屏, 可以使用腾讯的x5内核, 当然自己开发或者找到其他浏览内核也行...
视屏横屏
最新推荐文章于 2023-11-23 10:12:06 发布