package com.jerey.keepgank.fragment;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.text.ClipboardManager;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;
import com.jerey.keepgank.R;
import com.jerey.keepgank.base.AppSwipeBackActivity;
import com.orhanobut.logger.Logger;
import butterknife.Bind;
/**
* Created by Xiamin on 2017/2/12.
*/
public class WebFragment extends BaseFragment {
private static final String TAG = "WebFragment";
public static final String DATA_ID = "data_id";
public static final String DATA_TITLE = "data_title";
public static final String DATA_URL = "data_url";
public static final String DATA_TYPE = "data_type";
public static final String DATA_WHO = "data_who";
@Bind(R.id.progress_bar)
ProgressBar mProgressBar;
@Bind(R.id.web_view)
android.webkit.WebView mWebView;
Toolbar mToolBar;
private String mId;
private String mTitle;
private String mURl;
private String mType;
private String mWho;
public static WebFragment newInstance(String id, String title, String url, String type, String who) {
Bundle bundle = new Bundle();
bundle.putSerializable(DATA_ID, id);
bundle.putSerializable(DATA_TITLE, title);
bundle.putSerializable(DATA_URL, url);
bundle.putSerializable(DATA_TYPE, type);
bundle.putSerializable(DATA_WHO, who);
WebFragment Fragment = new WebFragment();
Fragment.setArguments(bundle);
return Fragment;
}
@Override
protected int returnLayoutID() {
return R.layout.fragment_web;
}
@Override
protected void afterCreate(Bundle savedInstanceState) {
Log.d(TAG, "afterCreate");
mToolBar = (Toolbar) mContainView.findViewById(R.id.toolbar);
((AppCompatActivity) getActivity()).setSupportActionBar(mToolBar);
mId = getArguments().getString(DATA_ID);
mTitle = getArguments().getString(DATA_TITLE);
mType = getArguments().getString(DATA_TYPE);
mURl = getArguments().getString(DATA_URL);
initWebView();
mWebView.loadUrl(mURl);
}
private void initWebView() {
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(android.webkit.WebView view, String url) {
//返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器
view.loadUrl(url);
return true;
}
});
mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(android.webkit.WebView view, int newProgress) {
if (newProgress == 100) {
// 网页加载完成
if (mProgressBar != null) {
mProgressBar.setVisibility(View.GONE);
mProgressBar.setProgress(0);
}
} else {
// 加载中
if (mProgressBar != null) {
mProgressBar.setVisibility(View.VISIBLE);
mProgressBar.setProgress(newProgress);
}
}
}
});
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
mWebView.getSettings().setSupportZoom(true);
mWebView.getSettings().setDisplayZoomControls(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.clear();
inflater.inflate(R.menu.menu_web, menu);
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_copy_the_url:
ClipboardManager c = (ClipboardManager) getActivity().getSystemService(getActivity().CLIPBOARD_SERVICE);
c.setText(mURl);
break;
case R.id.action_open_in_browser:
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(mURl));
getActivity().startActivity(intent);
break;
case R.id.action_share:
Intent intent1 = new Intent(Intent.ACTION_SEND);
intent1.setType("text/plain");
intent1.putExtra(Intent.EXTRA_TEXT, mURl);
intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getActivity().startActivity(Intent.createChooser(intent1, mTitle));
break;
case android.R.id.home:
Logger.d("onOptionsItemSelected android.R.id.home");
if (mWebView != null && mWebView.canGoBack()) {
mWebView.goBack();
} else {
((AppSwipeBackActivity) getActivity()).scrollToFinishActivity();
}
break;
}
return super.onOptionsItemSelected(item);
}
}