package com.qmusic.activities; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.text.TextUtils; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.ProgressBar; import android.widget.TextView; import com.qmusic.R; import com.qmusic.common.BConstants; import com.qmusic.uitls.BLog; import com.qmusic.webdoengine.BJSInterface; import com.qmusic.webdoengine.BWebHost; import com.qmusic.webdoengine.BWebView; public class BWebActivity extends BaseActivity implements OnClickListener { public static final String TITLE = "title"; public static final String URL = "url"; public static final String HTML_DATA = "htmlData"; public static final String SHOW_PROGRESS_BAR = "showProgressBar"; ProgressBar progressBar; ViewGroup webViewContainer; BWebView webView; MyWebHost webHost; boolean showProgressBar; View btnBack, btnForward, btnClose; TextView txtTitle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_web); init(); } protected void init() { btnBack = findViewById(R.id.activity_web_back_btn); btnForward = findViewById(R.id.activity_web_forward_btn); btnClose = findViewById(R.id.activity_web_close_btn); txtTitle = (TextView) findViewById(R.id.activity_web_title_txt); btnBack.setOnClickListener(this); btnForward.setOnClickListener(this); btnClose.setOnClickListener(this); btnForward.setVisibility(View.GONE); btnClose.setVisibility(View.GONE); webViewContainer = (ViewGroup) findViewById(R.id.activity_web_container); webHost = new MyWebHost(this); Bundle bundle = getIntent().getExtras(); if (bundle != null && (bundle.containsKey(URL) || bundle.containsKey(HTML_DATA))) { String title = bundle.getString(TITLE); if (TextUtils.isEmpty(title)) { txtTitle.setText(title); txtTitle.setVisibility(View.GONE); } else { txtTitle.setText(title); txtTitle.setVisibility(View.VISIBLE); txtTitle.setSelected(true); } showProgressBar = bundle.getBoolean(SHOW_PROGRESS_BAR, false); progressBar = (ProgressBar) findViewById(R.id.activity_web_progressbar); if (showProgressBar) { progressBar.setVisibility(View.VISIBLE); } else { progressBar.setVisibility(View.GONE); } webView = new BWebView(this); webView.attachWebview(webHost, webViewContainer); webHost.onCreate(); String url = bundle.getString(URL); String htmlData = bundle.getString(HTML_DATA); if (htmlData != null) { BLog.v(TAG, "htmlData:" + htmlData); webView.loadDataWithBaseURL(url, htmlData, "text/html", "utf-8", null); } else { webView.loadUrl(url); } } else { finish(); BLog.e(TAG, "url is null"); } } @Override protected void onStart() { super.onStart(); webHost.onStart(); } @Override protected void onResume() { super.onResume(); webHost.onResume(); // check if scrolls to bottom // if (webView.getContentHeight() * webView.getScaleY() == // (webView.getHeight() + webView.getScrollY())) {} } @Override protected void onPause() { super.onPause(); webHost.onPause(); } @Override protected void onStop() { super.onStop(); webHost.onStop(); } @Override protected void onDestroy() { super.onDestroy(); webHost.onDestory(); } @Override public void onBackPressed() { btnBack.performClick(); } @Override public void onClick(View v) { int viewId = v.getId(); if (viewId == R.id.activity_web_back_btn) { if (webView.canGoBack()) { webView.goBack(); } else { finishMyself(); } } else if (viewId == R.id.activity_web_forward_btn) { webView.goForward(); } else if (viewId == R.id.activity_web_close_btn) { finishMyself(); } } private void updateNav() { boolean hideTitle = false; if (webView.canGoForward()) { hideTitle = true; btnForward.setVisibility(View.VISIBLE); } else { btnForward.setVisibility(View.GONE); } if (webView.canGoBackOrForward(-1)) { hideTitle = true; btnClose.setVisibility(View.VISIBLE); } else { btnClose.setVisibility(View.GONE); } if (hideTitle) { txtTitle.setVisibility(View.GONE); } else { txtTitle.setVisibility(View.VISIBLE); } } private void finishMyself() { // if (backToSmartList) { // Intent intent = new Intent(this, SmartTaskActivity.class); // intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // startActivity(intent); // } if (webView != null) { webView.detachWebview(webViewContainer); } finish(); } class MyWebHost extends BWebHost { public MyWebHost(FragmentActivity activity) { super(activity); setJSInterface(new BJSInterface(this)); } @Override public Object onMessage(int arg0, int arg1, Object obj) { if (arg0 == BConstants.MSG_PAGE_START_LOADING) { if (showProgressBar) { progressBar.setVisibility(View.VISIBLE); } } else if (arg0 == BConstants.MSG_PAGE_FINISH_LOADING) { if (showProgressBar) { progressBar.setVisibility(View.GONE); } BWebActivity.this.updateNav(); } else { return super.onMessage(arg0, arg1, obj); } return null; } } }