package net.anumbrella.lkshop.widget;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import net.anumbrella.lkshop.R;
import net.anumbrella.lkshop.utils.BaseUtils;
/**
* author:Anumbrella
* Date:16/6/25 下午11:35
*/
public class BrowserLayout extends LinearLayout {
private Context mContext = null;
private WebView mWebView = null;
private View mBrowserControllerView = null;
private ImageButton mGoBackBtn = null;
private ImageButton mGoForwardBtn = null;
private ImageButton mGoBrowserBtn = null;
private ImageButton mRefreshBtn = null;
private int mBarHeight = 5;
private ProgressBar mProgressBar = null;
private String mLoadUrl;
public BrowserLayout(Context context) {
super(context);
init(context);
}
public BrowserLayout(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
private void init(Context context) {
mContext = context;
setOrientation(VERTICAL);
mProgressBar = (ProgressBar) LayoutInflater.from(context).inflate(R.layout.progress_horizontal, null);
mProgressBar.setMax(100);
mProgressBar.setProgress(0);
addView(mProgressBar, LayoutParams.MATCH_PARENT, (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, mBarHeight, getResources().getDisplayMetrics()));
mWebView = new WebView(context);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
mWebView.getSettings().setDefaultTextEncodingName("UTF-8");
mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
mWebView.getSettings().setBuiltInZoomControls(false);
mWebView.getSettings().setSupportMultipleWindows(true);
mWebView.getSettings().setUseWideViewPort(true);
mWebView.getSettings().setLoadWithOverviewMode(true);
mWebView.getSettings().setSupportZoom(false);
mWebView.getSettings().setPluginState(WebSettings.PluginState.ON);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.getSettings().setLoadsImagesAutomatically(true);
LayoutParams lps = new LayoutParams(LayoutParams.MATCH_PARENT, 0, 1);
addView(mWebView, lps);
mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
if (newProgress == 100) {
mProgressBar.setVisibility(View.GONE);
} else {
mProgressBar.setVisibility(View.VISIBLE);
mProgressBar.setProgress(newProgress);
}
}
});
mWebView.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
mLoadUrl = url;
}
});
mBrowserControllerView = LayoutInflater.from(context).inflate(R.layout.browser_controller, null);
mGoBackBtn = (ImageButton) mBrowserControllerView.findViewById(R.id.browser_controller_back);
mGoForwardBtn = (ImageButton) mBrowserControllerView.findViewById(R.id.browser_controller_forward);
mGoBrowserBtn = (ImageButton) mBrowserControllerView.findViewById(R.id.browser_controller_go);
mRefreshBtn = (ImageButton) mBrowserControllerView.findViewById(R.id.browser_controller_refresh);
mGoBackBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (canGoBack()) {
goBack();
}
}
});
mGoForwardBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (canGoForward()) {
goForward();
}
}
});
mRefreshBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
loadUrl(mLoadUrl);
}
});
mGoBrowserBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (!BaseUtils.isEmpty(mLoadUrl)) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(mLoadUrl));
mContext.startActivity(intent);
}
}
});
addView(mBrowserControllerView, LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
}
public void loadUrl(String url) {
mWebView.loadUrl(url);
}
public boolean canGoBack() {
return null != mWebView ? mWebView.canGoBack() : false;
}
public boolean canGoForward() {
return null != mWebView ? mWebView.canGoForward() : false;
}
public void goBack() {
if (null != mWebView) {
mWebView.goBack();
}
}
public void goForward() {
if (null != mWebView) {
mWebView.goForward();
}
}
public WebView getWebView() {
return mWebView != null ? mWebView : null;
}
public void hideBrowserController() {
mBrowserControllerView.setVisibility(View.GONE);
}
public void showBrowserController() {
mBrowserControllerView.setVisibility(View.VISIBLE);
}
}