80,351
社区成员
发帖
与我相关
我的任务
分享
private View xCustomView;
@ViewInject(R.id.video_view)
private FrameLayout videoview;// 全屏时视频加载view
@ViewInject(R.id.study_details_video)
WebView study_details_video;
private WebChromeClient.CustomViewCallback xCustomViewCallback;
private void palyVideo(String zipPath) {
finshBtn.setVisibility(View.INVISIBLE);
againBtn.setVisibility(View.INVISIBLE);
i = Integer.parseInt(learningCoursewareDetailsBeanList.get(0).getLearningTime());
handler.postDelayed(runnable, time);
study_details_video.getSettings().setJavaScriptEnabled(true);
study_details_video.getSettings().setPluginState(WebSettings.PluginState.ON);
study_details_video.getSettings().setPluginsEnabled(true);//可以使用插件
study_details_video.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
study_details_video.getSettings().setAllowFileAccess(true);
study_details_video.getSettings().setBuiltInZoomControls(true);// 隐藏缩放按钮
study_details_video.getSettings().setDefaultTextEncodingName("UTF-8");
study_details_video.getSettings().setUseWideViewPort(true);// 可任意比例缩放
study_details_video.getSettings().setLoadWithOverviewMode(true);
study_details_video.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);// 排版适应屏幕
study_details_video.setWebViewClient(new xWebViewClientent());
study_details_video.setWebChromeClient(new DefaultWebChromeClient());
study_details_video.loadUrl(zipPath);
}
private class DefaultWebChromeClient extends WebChromeClient {
private Bitmap xdefaltvideo;
private View xprogressvideo;
@Override//开启全屏
public void onShowCustomView(View view, CustomViewCallback callback) {
super.onShowCustomView(view, callback);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
study_details_video.setVisibility(View.GONE);
//如果一个视图已经存在,那么立刻终止并新建一个
if (xCustomView != null) {
callback.onCustomViewHidden();
return;
}
videoview.addView(view);
xCustomView = view;
xCustomViewCallback = callback;
videoview.setVisibility(View.VISIBLE);
}
@Override//视频播放退出全屏会被调用的
public void onHideCustomView() {
super.onHideCustomView();
if (xCustomView == null)//不是全屏播放状态
return;
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
xCustomView.setVisibility(View.GONE);
videoview.removeView(xCustomView);
xCustomView = null;
videoview.setVisibility(View.GONE);
xCustomViewCallback.onCustomViewHidden();
study_details_video.setVisibility(View.VISIBLE);
}
@Override//视频加载添加默认图标
public Bitmap getDefaultVideoPoster() {
if (xdefaltvideo == null) {
xdefaltvideo = BitmapFactory.decodeResource(
getResources(), R.drawable.videoicon);
}
return xdefaltvideo;
}
//视频加载时进程loading
@Override
public View getVideoLoadingProgressView() {
if (xprogressvideo == null) {
LayoutInflater inflater = LayoutInflater.from(StudyDetailsActivity.this);
xprogressvideo = inflater.inflate(R.layout.video_loading_progress, null);
}
return xprogressvideo;
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (inCustomView()) {
hideCustomView();
return true;
} else {
study_details_video.loadUrl("about:blank");
StudyDetailsActivity.this.finish();
}
}
return true;
}
/**
* 判断是否是全屏
*
* @return
*/
public boolean inCustomView() {
return (xCustomView != null);
}
/**
* 全屏时按返加键执行退出全屏方法
*/
public void hideCustomView() {
new DefaultWebChromeClient().onHideCustomView();
}
/**
* 处理各种通知、请求等事件
*
* @author
*/
public class xWebViewClientent extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.e("webviewtest", "shouldOverrideUrlLoading: " + url);
view.loadUrl(url);
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
Log.e("webviewtest", "shouldOverrideUrlLoading: " + url);
}
}