android--开发中WebView的使用

android开发中WebView的使用
WebView是个好东西,作用相当于一个迷你的浏览器,采用Webkit内核,因此完美支持html,javascript,css等。有时候,我们完全可以把UI甚至数据处理都交给WebView,配合PHP等服务端程序,这样Android开发就变成了网页开发,可以省很多精力。
阳光房天窗
下面是一个WebView的简单例子,如果用把所有功能都交给服务端脚本处理,这个程序已经很完整了,你只要写好网页,把URL填上,再编译,就是一个新软件。
程序功能介绍:打开网页同时显示一个ProgressDialog,网页载入完毕则隐藏,点击页面上链接时再次显示ProgressDialog,载入完隐藏,可用返回键返回上一页。
XML布局:
<?xml version="1.0" encoding="UTF-8"?>
<AbsoluteLayout android:orientation="vertical" android:id="@+id/tab1" android:layout_width="fill_parent" android:layout_height="fill_parent"
  xmlns:android="schemas.android/apk/res/android">
    <WebView android:id="@+id/wv"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_x="0.0dip"
        android:layout_y="0.0dip"
        android:layout_weight="1.0" />
</AbsoluteLayout>
JAVA代码:
package com.pocketdigi.webview;
import android.app.Activity;
硫铁矿制硫酸import android.app.AlertDialog;
import android.app.ProgressDialog;
t.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.KeyEvent;
import android.webkit.WebChromeClient;
筛片import android.webkit.WebView;
import android.webkit.WebViewClient;铁路道口声光报警器
public class main extends Activity {
    /** Called when the activity is first created. */
    WebView wv;
    ProgressDialog pd;
    Handler handler;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        Create(savedInstanceState);
        setContentView(R.layout.main);
        init();//执行初始化函数
        loadurl(wv,"www.pocketdigi");
        handler=new Handler(){
            public void handleMessage(Message msg) {
//定义一个Handler,用于处理下载线程与UI间通讯
              if (!Thread.currentThread().isInterrupted()){
                switch (msg.what) {
                case 0:
                    pd.show();//显示进度对话框           
                    break;
                case 1:
                    pd.hide();//隐藏进度对话框,不可使用dismiss()、cancel(),否则再次调用show()时,显示的对话框小圆圈不会动。
                    break;
                }
              }
              super.handleMessage(msg);
            }
        };
    }
    public void init(){//初始化
        wv=(WebView)findViewById(R.id.wv);
        wv.getSettings().setJavaScriptEnabled(true);//可用JS
        wv.setScrollBarStyle(0);//滚动条风格,为0就是不给滚动条留空间,滚动条覆盖在网页上
        wv.setWebViewClient(new WebViewClient(){
            public boolean shouldOverrideUrlLoading(final WebView view, final String url) {
                loadurl(view,url);//载入网页
                return true;
            }//重写点击动作,用webview载入
        });
        wv.setWebChromeClient(new WebChromeClient(){
          public void onProgressChanged(WebView view,int progress){//载入进度改变而触发
                if(progress==100){
                    handler.sendEmptyMessage(1);//如果全部载入,隐藏进度对话框
                }
                ProgressChanged(view, progress);
            }
        });
        pd=new ProgressDialog(main.this);
        pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
qsc6270        pd.setMessage("数据载入中,请稍候!");
    }
负压脉动式清肺仪
    public boolean onKeyDown(int keyCode, KeyEvent event) {//捕捉返回键
        if ((keyCode == KeyEvent.KEYCODE_BACK) && wv.canGoBack()) {
            wv.goBack();
            return true;
        }else if(keyCode == KeyEvent.KEYCODE_BACK){
            ConfirmExit();//按了返回键,但已经不能返回,则执行退出确认
            return true;
        }
        KeyDown(keyCode, event);
    }
    public void ConfirmExit(){//退出确认
        AlertDialog.Builder ad=new AlertDialog.Builder(main.this);
        ad.setTitle("退出");
        ad.setMessage("是否退出软件?");
        ad.setPositiveButton("是", new DialogInterface.OnClickListener() {//退出按钮
            @Override
            public void onClick(DialogInterface dialog, int i) {
                // TODO Auto-generated method stub
                main.this.finish();//关闭activity
            }
        });
        ad.setNegativeButton("否",new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int i) {
                //不退出不用执行任何操作
            }
        });
        ad.show();//显示对话框
    }
    public void loadurl(final WebView view,final String url){
        new Thread(){
            public void run(){
                handler.sendEmptyMessage(0);
                view.loadUrl(url);//载入网页
            }
        }.start();
    }
}

Android开发之WebView组件的使用详解
网络内容
1、LoadUrl直接显示网页内容(单独显示网络图片)
2、LoadData显示中文网页内容(含空格的处理)
APK包内文件
1、LoadUrl显示APK中Html和图片文件
2、LoadData(loadDataWithBaseURL)显示APK中图片和文字混合的Html内容
res/l

本文发布于:2024-09-21 13:48:11,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/278296.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:显示   载入   网页   退出   隐藏   返回
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议