package com.smartandroid.sa.aq; import android.app.Dialog; import android.content.Context; import android.graphics.Bitmap; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.RelativeLayout; import android.widget.TextView; public class WebDialog extends Dialog { private String url; private WebViewClient client; private WebView wv; private LinearLayout ll; private String message; public WebDialog(Context context, String url, WebViewClient client) { //super(context, R.style.Theme_Light_NoTitleBar); super(context, android.R.style.Theme_NoTitleBar); this.url = url; this.client = client; } public void setLoadingMessage(String message){ this.message = message; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); RelativeLayout layout = new RelativeLayout(getContext()); layout.setBackgroundColor(0xFFFFFFFF); setupWebView(layout); setupProgress(layout); FrameLayout.LayoutParams FILL = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT); addContentView(layout, FILL); } private void setupProgress(RelativeLayout layout){ Context context = getContext(); ll = new LinearLayout(context); ProgressBar progress = new ProgressBar(context); int p = AQUtility.dip2pixel(context, 30); LinearLayout.LayoutParams plp = new LinearLayout.LayoutParams(p, p); ll.addView(progress, plp); if(message != null){ TextView tv = new TextView(context); LinearLayout.LayoutParams tlp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); tlp.leftMargin = AQUtility.dip2pixel(context, 5); tlp.gravity = 0x10; tv.setText(message); ll.addView(tv, tlp); } RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); lp.addRule(RelativeLayout.CENTER_IN_PARENT); layout.addView(ll, lp); } private void setupWebView(RelativeLayout layout) { wv = new WebView(getContext()); wv.setVerticalScrollBarEnabled(false); wv.setHorizontalScrollBarEnabled(false); if(client == null) client = new WebViewClient(); wv.setWebViewClient(new DialogWebViewClient()); WebSettings ws = wv.getSettings(); ws.setJavaScriptEnabled(true); //ws.setSaveFormData(false); //wv.loadUrl(url); RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT); layout.addView(wv, lp); } public void load(){ if(wv != null){ wv.loadUrl(url); } } private void showProgress(boolean show){ if(ll != null){ if(show) ll.setVisibility(View.VISIBLE); else ll.setVisibility(View.GONE); } } @Override public void dismiss(){ try{ super.dismiss(); }catch(Exception e){ } } private class DialogWebViewClient extends WebViewClient{ @Override public void onPageFinished(WebView view, String url) { showProgress(false); client.onPageFinished(view, url); } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { client.onPageStarted(view, url, favicon); } @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { client.onReceivedError(view, errorCode, description, failingUrl); } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return client.shouldOverrideUrlLoading(view, url); } } }