WebView学习笔记

WebView使用笔记:

1. 避免启动默认浏览器打开网页:

webView.setWebViewClient(new WebViewClient());

2. 开启JavaScript:

// 获取WebView的管理对象;

WebSettings webSettings = webView.getSettings();

// 设置JS可用:

webSettings.setJavaScriptEnabled(true);

3. 加载Url有两种(第二种不会有中文乱码的问题):

<1>:webView.load(String Url);

<2>:webView.loadDataWithBaseURL(String baseUrl,String data,String mimeType,String encoding,String histoyUrl)

4. 加载本地html文件(本地文件放在assets文件夹下):

webView.loadUrl("file:///android_asset/index.html");

5 设置支持缩放:

webSettings.setSupportZoom(true);

6 添加对外的接口:

webView.addJavascriptInterface(new MyObject(this),"myObj"); //这句可以使JavaScript通过myObj来调用MyObject类中的方法

示例代码:

一:编写Activity:

public class MainActivity extends AppCompatActivity {
    private EditText et_url;
    private WebView webView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et_url = (EditText) findViewById(R.id.url);
        webView = (WebView) findViewById(R.id.webView);
        //  避免启动默认浏览器打开网页
        webView.setWebViewClient(new WebViewClient());
        //  获取WebView的管理对象;
        WebSettings webSettings = webView.getSettings();
        //  设置JS可用
        webSettings.setJavaScriptEnabled(true);
        webView.addJavascriptInterface(new MyObject(this),"myObj");
        //webView.loadDataWithBaseURL(null,getHTMLString(),"text/html","utf-8",null);
        webView.loadUrl("file:///android_asset/index.html");
        //  设置支持缩放
        webSettings.setSupportZoom(true);
        et_url.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                if(actionId == EditorInfo.IME_ACTION_SEARCH)
                {
                    String url = et_url.getText().toString();
                    webView.loadUrl(url);
                    return true;
                }
                return false;
            }
        });
    }

    private String getHTMLString()
    {
        StringBuffer sb = new StringBuffer();
        sb.append("<html>");
        sb.append("<head>");
        sb.append("<title>欢迎你小伙子</title>");
        sb.append("</head>");
        sb.append("<body>");
        sb.append("<h2>Android Studio API</h2>");
        sb.append("</body>");
        sb.append("</html>");
        return sb.toString();
    }
}
二:编写MyObject类:

public class MyObject {
    private Context mContext;

    public MyObject(Context context)
    {
        this.mContext = context;
    }
    //  该方法会暴露给Javascript调用
    @JavascriptInterface
    public void showToast(String name){
        Toast.makeText(mContext, name+"你好啊!", Toast.LENGTH_SHORT).show();
    }
    @JavascriptInterface
    public void showList(){
        new AlertDialog.Builder(mContext)
                .setTitle("无限火力")
                .setItems(new String[]{"牛头酋长", "黑暗之女"}, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(mContext, which+"", Toast.LENGTH_SHORT).show();
                    }
                })
                .setPositiveButton("确定",null)
                .setNegativeButton("关闭",null)
                .create()
                .show();
    }
}


注:建立assets文件夹,该文件加下建立index.html文件(asset文件夹与res同级,不要建在res文件夹下)

布局文件省略
当WebView加载完index.html点击列表出现如下效果:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值