package com.forfan.bigbang.component.activity;
import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Message;
import android.support.annotation.NonNull;
import android.support.v4.widget.ContentLoadingProgressBar;
import android.support.v7.widget.AppCompatSpinner;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.webkit.WebBackForwardList;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import com.forfan.bigbang.R;
import com.forfan.bigbang.component.activity.screen.CaptureResultActivity;
import com.forfan.bigbang.component.activity.screen.ScreenCaptureActivity;
import com.forfan.bigbang.component.activity.searchengine.SearchEngineActivity;
import com.forfan.bigbang.component.base.BaseActivity;
import com.forfan.bigbang.util.ConstantUtil;
import com.forfan.bigbang.util.LogUtil;
import com.forfan.bigbang.util.SearchEngineUtil;
import com.forfan.bigbang.util.ToastUtil;
import com.forfan.bigbang.util.UrlCountUtil;
import com.forfan.bigbang.util.ViewUtil;
import com.shang.commonjar.contentProvider.SPHelper;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Field;
import java.net.URLEncoder;
import java.util.ArrayList;
public class WebActivity
extends BaseActivity {
private static final java.lang.String TAG = "webActivity";
private LinearLayout mContentLayout;
private ObjectAnimator mEnterAnim;
private FrameLayout mFrameLayout;
private ContentLoadingProgressBar mProgressBar;
private AppCompatSpinner mTitleSpinner;
private String mUrl;
private WebView mWebView;
private int browserSelection;
private String mQuery;
private boolean isrefreshNotreload;
private int mHisSize;
private void initAnim() {
this.mEnterAnim = ObjectAnimator.ofFloat(this.mFrameLayout, "_enter", new float[]{0.0F, 1.0F}).setDuration(250L);
this.mEnterAnim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
public void onAnimationUpdate(ValueAnimator paramAnonymousValueAnimator) {
float f = ((Float) paramAnonymousValueAnimator.getAnimatedValue()).floatValue();
WebActivity.this.mFrameLayout.setScaleX(f);
WebActivity.this.mFrameLayout.setScaleY(f);
if (f == 0.0F) {
WebActivity.this.mFrameLayout.setVisibility(View.VISIBLE);
}
}
});
}
private boolean isFistIn = true;
private void initViews() {
refreshSpinner();
browserSelection = SPHelper.getInt(ConstantUtil.BROWSER_SELECTION, 0);
this.mFrameLayout = ((FrameLayout) findViewById(android.R.id.content));
this.mContentLayout = ((LinearLayout) findViewById(R.id.content_view));
mContentLayout.removeAllViews();
this.mWebView = new WebView(this);
this.mContentLayout.addView(this.mWebView, -1, -1);
this.mProgressBar = ((ContentLoadingProgressBar) findViewById(R.id.progress));
mProgressBar.onAttachedToWindow();
this.mWebView.getSettings().setJavaScriptEnabled(true);
this.mWebView.setBackgroundColor(-1);
findViewById(R.id.finish).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
UrlCountUtil.onEvent(UrlCountUtil.CLICK_BROWSER_EXIT);
finish();
}
});
findViewById(R.id.open_chrome).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
UrlCountUtil.onEvent(UrlCountUtil.CLICK_BROWSER_TO_SYS_BROWSER);
Uri uri = getUri();
if (uri != null) {
try {
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();
} catch (Exception e) {
e.printStackTrace();
}
}
}
});
LinearLayout.LayoutParams localLayoutParams = (LinearLayout.LayoutParams) this.mWebView.getLayoutParams();
int i = (int) ViewUtil.dp2px(2.0F);
localLayoutParams.setMargins(i, 0, i, i);
this.mWebView.setLayoutParams(localLayoutParams);
this.mWebView.setWebViewClient(new WebViewClient() {
public void onFormResubmission(WebView paramAnonymousWebView, Message paramAnonymousMessage1, Message paramAnonymousMessage2) {
paramAnonymousMessage2.sendToTarget();
}
public boolean shouldOverrideUrlLoading(WebView paramAnonymousWebView, String paramAnonymousString) {
mUrl = paramAnonymousWebView.getUrl();
return super.shouldOverrideUrlLoading(paramAnonymousWebView, paramAnonymousString);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
WebBackForwardList webBackForwardList = mWebView.copyBackForwardList();
if (webBackForwardList.getCurrentIndex() != -1 && webBackForwardList.getCurrentIndex() != webBackForwardList.getSize() - 1)
refreshSpinnerTitle(url);
}
});
this.mWebView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView paramAnonymousWebView, int paramAnonymousInt) {
if (paramAnonymousInt == 100) {
WebActivity.this.mProgressBar.hide();
return;
}
WebActivity.this.mProgressBar.setProgress(paramAnonymousInt);
WebActivity.this.mProgressBar.show();
}
});
this.mWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
}
private void refreshSpinnerTitle(String mUrl) {
for (int i = 0; i < SearchEngineUtil.getInstance().getSearchEngines().size(); i++) {
String url = SearchEngineUtil.getInstance().getSearchEngines().get(i).url;
if (mUrl.contains(url)) {
isrefreshNotreload = true;
mTitleSpinner.setSelection(i);
return;
}
}
}
@NonNull
private void refreshSpinner() {
ArrayList<String> engines = SearchEngineUtil.getInstance().getSearchEngineNames();
engines.add(getResources().getString(R.string.setting_search_engine_web));
this.mTitleSpinner = ((AppCompatSpinner) findViewById(R.id.title));
mTitleSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if (position == engines.size() - 1) {
UrlCountUtil.onEvent(UrlCountUtil.CLICK_SETTINGS_SEARCH_ENGINE_WEB);
Intent intent = new Intent(WebActivity.this, SearchEngineActivity.class);
startActivity(intent);
} else {
UrlCountUtil.onEvent(UrlCountUtil.STATE_BROWSER_ENGINES, engines.get(position));
// SPHelper.save(ConstantUtil.BROWSER_SELECTION, position);
browserSelection = position;
if (isFistIn) {
isFistIn = false;
return;
}
if (isrefreshNotreload) {
isrefreshNotreload = false;
return;
}
toLoadUrl("", mQuery);
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
LogUtil.d(TAG, "onNothingSelected:");
}
});
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.simple_spinner_item, engines);
mTitleSpinner.setAdapter(adapter);
mTitleSpinner.setSelection(browserSelection);
adapter.setDropDownViewResource(R.layout.simple_spinner_dropdown_item);
return;
}
private Uri getUri() {
if (!TextUtils.isEmpty(mUrl)) {
return Uri.parse(mUrl);
} else {
if (!TextUtils.isEmpty(mQuery))
return Uri.parse(getUrlStrBySelect(mQuery));
}
return null;
}
/**
*
*/
private void toLoadUrl(String url, String query) {
if (!TextUtils.isEmpty(url)) {
mWebView.loadUrl(url);
} else if (!TextUtils.isEmpty(query)) {
String url_ = getUrlStrBySelect(query);
mWebView.loadUrl(url_);
} else {
ToastUtil.show(R.string.no_query);
mWebView.loadUrl("http://www.baidu.com");
}
}
private String getUrlStrBySelect(String query) {
query = query.replaceAll("\n", "");
String url = SearchEngineUtil.getInstance().getSearchEngines().get(browserSelection).url;
if (!url.startsWith("http"))
url = "http://" + url;
try {
return url + URLEncoder.encode(query, "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return url + query;
}
private void initWindow() {
WindowManager.LayoutParams localLayoutParams = getWindow().getAttributes();
DisplayMetrics localDisplayMetrics = new DisplayMetrics();
((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getMetrics(localDisplayMetrics);
localLayoutParams.width = ((int) (localDisplayMetrics.widthPixels * 0.9D));
localLayoutParams.gravity = 17;
localLayoutParams.height = ((int) (localDisplayMetrics.heightPixels * 0.8D));
getWindow().setAttributes(localLayoutParams);
getWindow().setGravity(17);
getWindow().getAttributes().windowAnimations = R.anim.anim_scale_in;
}
private void setConfigCallback(WindowManager paramWindowManager) {
try {
Field localField = WebView.class.getDeclaredField("mWebViewCore").getType().getDeclaredField("mBrowserFrame").getType().getDeclaredField("sConfigCallback");
localField.setAccessible(true);
Object localObject = localField.get(null);
if (localObject == null) {
return;
}
localField = localField.getType().getDeclaredField("mWindowManager");
localField.setAccessible(true);
localField.set(localObject, paramWindowManager);
return;
} catch (Exception ex) {
}
}
protected void onCreate(Bundle paramBundle) {
super.onCreate(paramBundle);
setFinishOnTouchOutside(true);
setContentView(R.layout.activity_web);
this.mUrl = getIntent().getStringExtra("url");
this.mQuery = getIntent().getStringExtra("query");
initWindow();
initViews();
initAnim();
this.mEnterAnim.start();
if(!TextUtils.isEmpty(mUrl) && mUrl.startsWith(CaptureResultActivity.HTTP_IMAGE_BAIDU_COM)){
mTitleSpinner.setVisibility(View.GONE);
findViewById(R.id.title_).setVisibility(View.VISIBLE);
}else {
mTitleSpinner.setVisibility(View.VISIBLE);
findViewById(R.id.title_).setVisibility(View.GONE);
}
toLoadUrl(mUrl, mQuery);
setConfigCallback((WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE));
}
@Override
protected void onResume() {
super.onResume();
refreshSpinner();
}
protected void onDestroy() {
setConfigCallback(null);
super.onDestroy();
if (this.mWebView != null) {
((ViewGroup) this.mWebView.getParent()).removeView(this.mWebView);
this.mWebView.removeAllViews();
this.mWebView.destroy();
this.mWebView = null;
}
if (mProgressBar != null) {
mProgressBar.onDetachedFromWindow();
}
finish();
}
@Override
public void onBackPressed() {
if (mWebView.isFocused() && mWebView.canGoBack()) {
mWebView.goBack();
} else {
super.onBackPressed();
finish();
}
}
}