Android开发---加载h5界面

来源:互联网 发布:java基础 学javascript 编辑:程序博客网 时间:2024/05/18 00:40

首先 布局

只有一个webview 还有一个加载界面时候用的progressbar

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:layerType="hardware"    android:orientation="vertical" >    <RelativeLayout        android:layout_width="match_parent"        android:layout_height="0dp"        android:layout_weight="1"        android:orientation="vertical" >        <WebView            android:id="@+id/webview"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:fadingEdge="none"            android:visibility="invisible"            android:fadingEdgeLength="0dp"            android:scrollbars="none" />        <ProgressBar            android:id="@+id/progressBar"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_centerInParent="true"            />    </RelativeLayout></LinearLayout>


java代码


public class WebViewActivity extends TitleActivity{    private WebView webview;    private ProgressBar progressBar;    private ProgressBarHandler mProgressBarHandler = new ProgressBarHandler(this);    private String mWebViewUrl;    private String mTitle;    public static void open(Context context,String url,String title){        Intent intent = new Intent();        intent.setClass(context,WebViewActivity.class);        intent.putExtra("webUrl",url);        intent.putExtra("title",title);        context.startActivity(intent);    }    @Override    protected void setContentView() {        setContentView(R.layout.activity_web_view);    }    @Override    protected void bindViews() {        ButterKnife.bind(this);    }    @Override    protected void initializeViews() {        setLeftInfo();        if (getIntent() != null) {            mWebViewUrl = (String) getIntent().getExtras().get("webUrl");            mTitle = (String) getIntent().getExtras().get("title");            setCenterTitle(mTitle);            initViews();        }    }    @Override    protected void initializeData() {    }    private void initViews() {        webview = (WebView) findViewById(R.id.webview);        progressBar = (ProgressBar) findViewById(R.id.progressBar);        WebSettings webSettings = webview.getSettings();        webSettings.setDomStorageEnabled(true);        webSettings.setLoadWithOverviewMode(true);        webSettings.setUseWideViewPort(true);        webSettings.setJavaScriptEnabled(true);        webSettings.setCacheMode(WebSettings.LOAD_DEFAULT);        webview.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);        webview.setWebChromeClient(new WebChromeClient() {            @Override            public boolean onJsAlert(WebView view, String url, String message,                                     JsResult result) {                return super.onJsAlert(view, url, message, result);            }            @Override            public boolean onJsConfirm(WebView view, String url, String message, JsResult result) {                return super.onJsConfirm(view, url, message, result);            }        });        webview.setWebViewClient(new WebViewClient() {            @Override            public void onPageFinished(WebView view, String url) {                mProgressBarHandler.sendEmptyMessage(0);                super.onPageFinished(view, url);            }            @Override            public boolean shouldOverrideUrlLoading(WebView view, String url) {                loadUrl(view, url);                return true;            }        });        webview.setBackgroundColor(0);        if (BussinessUtil.isValid(mWebViewUrl)){            webview.loadUrl(mWebViewUrl);        }    }    private void loadUrl(final WebView view, final String url) {        mProgressBarHandler.sendEmptyMessage(1);        view.loadUrl(url);    }    private static class ProgressBarHandler extends Handler {        private final WeakReference<WebViewActivity> mActivity;        public ProgressBarHandler(WebViewActivity activity) {            mActivity = new WeakReference<>(activity);        }        @Override        public void handleMessage(Message msg) {            if (mActivity.get() == null || mActivity.get().isFinishing()) {                return;            }            switch (msg.what) {                case 0:                    if (mActivity.get().progressBar != null && mActivity.get().webview != null) {                        mActivity.get().progressBar.setVisibility(View.INVISIBLE);                        mActivity.get().webview.setVisibility(View.VISIBLE);                    }                    break;                case 1:                    if (mActivity.get().progressBar != null && mActivity.get().webview != null) {                        mActivity.get().progressBar.setVisibility(View.VISIBLE);                        mActivity.get().webview.setVisibility(View.INVISIBLE);                    }                    break;            }            super.handleMessage(msg);        }    }    @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        if (keyCode == KeyEvent.KEYCODE_BACK && webview != null && webview.canGoBack()) {            webview.goBack();            return true;        }        return super.onKeyDown(keyCode, event);    }

最后,使用的时候,只需要调用WebViewActivity中的open方法,然后将h5地址传过来就行

如:

case R.id.llAboutus:    WebViewActivity.open(this,"http://static.isudoo.com/pages/aboutus.html","关于我们");    break;

2 0
原创粉丝点击