WebView与js交互

xml编辑

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" 
    android:orientation="vertical">

    <EditText 
        android:id="@+id/et"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:hint="网址"
        />
    <ProgressBar 
        android:id="@+id/pb"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        style="?android:attr/progressBarStyleHorizontal"
        android:visibility="gone"
        />
    <Button 
        android:onClick="dian"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="23sp"
        android:text="前往"   
        android:visibility="gone"     
        />
    <WebView 
        android:id="@+id/wv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />

java代码

private WebView wv;
    private EditText et;
    private ProgressBar pb;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        wv=(WebView)findViewById(R.id.wv);
        et=(EditText)findViewById(R.id.et);
        pb=(ProgressBar)findViewById(R.id.pb);
        //敲回车,搜索
        et.setOnEditorActionListener(new OnEditorActionListener() {

            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                wv.loadUrl(v.getText().toString().trim());//加载文本中输入的网址
                return true;
            }
        });
        //监听输入框,自动搜索
        et.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                // TODO Auto-generated method stub
                if(s.toString().trim().endsWith("com")){
                    wv.loadUrl(s.toString().trim());//加载网络网页
                }
            }
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
            }
            @Override
            public void afterTextChanged(Editable s) {
            }
        });
        //设置网页不跳转到其他位置(加载html的时候,只需要用webviewclient即可)
        wv.setWebViewClient(new WebViewClient());
        //兼容互联网上附加JavaScript的页面的时候和调用JavaScript对话框的时候
        //设置web浏览器(Chrome  谷歌浏览器)
        wv.setWebChromeClient(new WebChromeClient(){
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                super.onProgressChanged(view, newProgress);

                pb.setVisibility(view.VISIBLE);
                pb.setProgress(newProgress);
                if(newProgress==100){
                    pb.setVisibility(view.GONE);
                }
            }
        });
        initwebsetting();
//      wv.loadUrl("http://www.baidu.com");
    }
    private void initwebsetting(){
        WebSettings settings=wv.getSettings();
        //默认加载缓存,如果缓存过期,就加载网络
        settings.setCacheMode(WebSettings.LOAD_DEFAULT);
        //加载网页图片
        settings.setJavaScriptEnabled(true);
        settings.setDefaultZoom(ZoomDensity.FAR);//设置自动缩放
    }
    //控制返回上一个页面
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        Toast.makeText(MainActivity.this, "key"+keyCode, 0).show();
        if(keyCode==KeyEvent.KEYCODE_BACK){
            if(wv.canGoBack()){
                wv.goBack();
            }else{
                finish();
            }
        }
        return true;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值