package typical_if.android.fragment; import android.app.Activity; import android.content.pm.ActivityInfo; import android.graphics.Bitmap; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.webkit.CookieManager; import android.webkit.CookieSyncManager; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.FrameLayout; import com.vk.sdk.api.model.VKApiVideo; import typical_if.android.R; /** * Created by LJ on 11.08.2014. */ public class FragmentWebView extends Fragment { private WebView webView; private FrameLayout customViewContainer; private WebChromeClient.CustomViewCallback customViewCallback; private View mCustomView; private myWebChromeClient mWebChromeClient; private myWebViewClient mWebViewClient; private VKApiVideo video; final private static Bundle args = new Bundle(); public FragmentWebView newInstance(VKApiVideo video) { FragmentWebView fragment = new FragmentWebView(); args.clear(); args.putParcelable("video", video); fragment.setArguments(args); return fragment; } public FragmentWebView(){ } @Override public void onCreate(Bundle savedInstanceState) { getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); super.onCreate(savedInstanceState); if (getArguments() != null) { this.video = (VKApiVideo)getArguments().getParcelable("video"); } } @Override public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final View rootView = inflater.inflate(R.layout.fragment_web_view, container, false); setRetainInstance(true); playVideo(video.player, rootView); return rootView; } // public FragmentWebView(VKApiVideo video){ // this.video=video; // } @Override public void onAttach(Activity activity) { super.onAttach(activity); } @Override public void onDetach() { super.onDetach(); } public void playVideo(String url, View view){ webView = (WebView) view.findViewById(R.id.webView); mWebViewClient = new myWebViewClient(); webView.setWebViewClient(mWebViewClient); mWebChromeClient = new myWebChromeClient(); webView.setWebChromeClient(mWebChromeClient); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setAppCacheEnabled(true); webView.getSettings().setBuiltInZoomControls(true); webView.getSettings().setSaveFormData(true); webView.getSettings().setJavaScriptEnabled(true); webView.clearCache(true); CookieSyncManager.createInstance(getActivity()); final CookieManager cookieManager = CookieManager.getInstance(); cookieManager.removeAllCookie(); webView.loadUrl(url); } public boolean inCustomView() { return (mCustomView != null); } public void hideCustomView() { mWebChromeClient.onHideCustomView(); } @Override public void onPause() { super.onPause(); //To change body of overridden methods use File | Settings | File Templates. webView.onPause(); } @Override public void onResume() { super.onResume(); //To change body of overridden methods use File | Settings | File Templates. webView.onResume(); } @Override public void onStop() { super.onStop(); //To change body of overridden methods use File | Settings | File Templates. if (inCustomView()) { hideCustomView(); } } // @Override // public boolean onKeyDown(int keyCode, KeyEvent event) { // if (keyCode == KeyEvent.KEYCODE_BACK) { // // if (inCustomView()) { // hideCustomView(); // return true; // } // // if ((mCustomView == null) && webView.canGoBack()) { // webView.goBack(); // return true; // } // } // return Constants.mainActivity.onKeyDown(keyCode, event); // } class myWebChromeClient extends WebChromeClient { private Bitmap mDefaultVideoPoster; private View mVideoProgressView; @Override public void onShowCustomView(View view, int requestedOrientation, CustomViewCallback callback) { onShowCustomView(view, callback); //To change body of overridden methods use File | Settings | File Templates. } @Override public void onShowCustomView(View view,CustomViewCallback callback) { // if a view already exists then immediately terminate the new one if (mCustomView != null) { callback.onCustomViewHidden(); return; } mCustomView = view; webView.setVisibility(View.GONE); customViewContainer.setVisibility(View.VISIBLE); customViewContainer.addView(view); customViewCallback = callback; } @Override public View getVideoLoadingProgressView() { if (mVideoProgressView == null) { LayoutInflater inflater = LayoutInflater.from(getActivity()); mVideoProgressView = inflater.inflate(R.layout.video_progress, null); } return mVideoProgressView; } @Override public void onHideCustomView() { super.onHideCustomView(); //To change body of overridden methods use File | Settings | File Templates. if (mCustomView == null) return; webView.setVisibility(View.VISIBLE); customViewContainer.setVisibility(View.GONE); // Hide the custom view. mCustomView.setVisibility(View.GONE); // Remove the custom view from its container. customViewContainer.removeView(mCustomView); customViewCallback.onCustomViewHidden(); mCustomView = null; } } class myWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return super.shouldOverrideUrlLoading(view, url); //To change body of overridden methods use File | Settings | File Templates. } } }