package com.letv.watchball.fragment;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Paint;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.text.TextUtils;
import android.util.Log;
import android.view.*;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import com.handmark.pulltorefresh.library.internal.Utils;
import com.letv.http.bean.LetvDataHull;
import com.letv.watchball.R;
import com.letv.watchball.async.LetvHttpAsyncTask;
import com.letv.watchball.async.RequestAlbumByIdTask;
import com.letv.watchball.bean.LiveList;
import com.letv.watchball.bean.Video;
import com.letv.watchball.bean.WorldCupEntity;
import com.letv.watchball.ui.impl.BasePlayActivity;
import com.letv.watchball.utils.TextUtil;
/**
* Created by songmengyu on 14-4-9.
*/
public class WorldCupFragment extends Fragment implements WebFragmentBackListener ,View.OnClickListener{
private ViewGroup rootView;
private WebView mWebView;
private boolean isShow;
private boolean isFinish;
private ImageView backBtn;
private ImageView forwardBtn;
private ImageView reloadBtn;
// private String worldCupUrl = "http://m.letv.com/2014/?noheader=1&nofooter=1";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (rootView != null) {
ViewGroup parent = (ViewGroup) rootView.getParent();
if (parent != null)
parent.removeView(rootView);
}
try {
rootView = (ViewGroup) inflater.inflate(R.layout.world_cup_fragment,null, false);
} catch (InflateException e) {
/* map is already there, just return view as it is */
}
return rootView;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mWebView = (WebView) rootView.findViewById(R.id.world_cup_web_view);
WebSettings settings = mWebView.getSettings();
settings.setJavaScriptEnabled(true);
// if(Build.VERSION.SDK_INT >= 16){
// mWebView.setLayerType(View.LAYER_TYPE_HARDWARE,new Paint());
// }
mWebView.setWebViewClient(mWebViewClient);
requestWebViewData();
mWebView.addJavascriptInterface(new DemoInterface(), "demo");
backBtn = (ImageView) rootView.findViewById(R.id.webview_back);
forwardBtn = (ImageView) rootView.findViewById(R.id.webview_forward);
reloadBtn = (ImageView) rootView.findViewById(R.id.webview_reload);
backBtn.setOnClickListener(this);
forwardBtn.setOnClickListener(this);
reloadBtn.setOnClickListener(this);
}
public void requestWebViewData() {
if(!TextUtils.isEmpty(WorldCupEntity._getInstance().getUrl())){
mWebView.loadUrl(WorldCupEntity._getInstance().getUrl());
}else{
mWebView.loadUrl("http://m.letv.com");
}
}
private WebViewClient mWebViewClient = new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.d("smyid", url);
try {
int index = url.lastIndexOf("/");
if (index > 0) {
String u = url.substring(url.lastIndexOf("/") + 1, url.length());
if (u.contains("vplay_")) {
String vplayId = u.substring(u.lastIndexOf("_") + 1 , u.lastIndexOf("."));
String cid ,pid;
if(u.contains("cid")){
cid = u.substring(u.lastIndexOf("cid=") + 4 ,u.lastIndexOf("cid=") + 5);
} else {
cid = "4";
}
if (u.contains("pid")){
pid = u.substring(u.lastIndexOf("pid=") + 4 ,u.length());
} else {
pid = "0";
}
Log.d("smyid", "vplayId=" + vplayId + " cid=" + cid + " pid=" + pid);
if (!isFinish && !TextUtils.isEmpty(vplayId) && !TextUtils.isEmpty(cid)) {
view.stopLoading();
BasePlayActivity.launch(getActivity(), Long.parseLong(pid), Long.parseLong(vplayId), BasePlayActivity.LAUNCH_FROM_HOME);
return true;
} else {
view.loadUrl(url + "");
Log.d("smyid", url);
}
} else {
view.loadUrl(url + "");
Log.d("smyid", url);
}
}
} catch (Exception e) {
e.printStackTrace();
}
Log.d("smyid", url);
return super.shouldOverrideUrlLoading(view, url + "");
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
//页面开始加载
}
@Override
public void onPageFinished(WebView view, String url) {
if (url.equals(WorldCupEntity._getInstance().getUrl()))
view.clearHistory();
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
//页面加载错误
}
};
@Override
public boolean keyBackPress() {
if (isShow){
if (mWebView.canGoBack()) {
mWebView.goBack();
return true;
} else {
return false;
}
} else {
return false;
}
}
public void isWorldCupFragmentShow(boolean b) {
isShow = b;
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.webview_back:
if (mWebView.canGoBack())
mWebView.goBack();
break;
case R.id.webview_forward:
Log.i("oyys", "mWebView.canGoForward()="+mWebView.canGoForward());
if (mWebView.canGoForward())
mWebView.goForward();
break;
case R.id.webview_reload:
mWebView.reload();
break;
default:
break;
}
}
public void reloadWorldCup() {
requestWebViewData();
}
final private class DemoInterface {
void clickInAndroid(String s){
System.out.println(s);
}
}
private class WebViewPlayDataTask extends LetvHttpAsyncTask<Video>{
public WebViewPlayDataTask(Context context) {
super(context);
}
@Override
public LetvDataHull<Video> doInBackground() {
return null;
}
@Override
public void onPostExecute(int updateId, Video result) {
}
}
@Override
public void onDestroy() {
super.onDestroy();
try {
getActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
isFinish = true;
if (mWebView != null) {
mWebView.stopLoading();
/**
* 3.0以上系统编译,如果不隐藏webview会出现崩溃
*/
mWebView.setVisibility(View.GONE);
mWebView.destroy();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}