[android] WebView自定义浏览器

在布局文件中添加<EditText/>和<Button/>控件,

在布局文件中添加<WebView/>控件

在Activity中获取WebView对象

调用WebView对象的loadUrl()方法,参数:String路径

添加访问网络的权限android.permission.INTERNET

调用WebView对象的getSettings()方法,获取到WebSettings设置对象

调用WebSettings对象的setSupportZoom()方法,设置支持缩放,参数:布尔值

调用WebSettings对象的setBuiltInZoomControls(),设置缩放控件,参数:布尔值、

调用WebView对象的setWebViewClient()方法,设置客户端防止链接打开系统浏览器,参数:WebViewClient对象

监听后退键,返回上一界面

重写Activity的onKeyDown()方法,参数传递进来int键盘码,KeyEvent对象

如果键盘码等于KeyEvent.KEYCODE_BACK并且当前WebView对象有很多页能后退,调用WebView对象的canGoBack()方法

调用WebView对象的goBack()方法,页面后退

设置菜单键,重写onCreateOptionsMenu()方法,传递进来Menu对象

调用Menu对象的addSubMenu()方法,添加菜单,参数:组id,条目id,排序,标题

添加刷新,后退,前进

监听小菜单点击事件

重写onOptionsItemSelected()方法,传递进来MenuItem对象

switch判断一下MenuItem对象的getOrder(),对应上面的排序

页面刷新,调用WebView对象的reload()方法

页面后退,先调用WebView对象的canGoBack()方法,判断是否能后退,调用goBack()方法后退

页面前进,调用WebView对象的canGoForward()方法,判断是否能前进,调用goForward()方法前进

页面loading

获取ProgressDialog对象,new出来,参数:上下文

调用ProgressDialog对象的setMessage()方法,参数:文本

调用WebView对象的setWebChromeClient()方法,参数:WebViewClient对象,

匿名内部类继承WebViewClient类,重写onPageStarted()方法和onPageFinshed()方法

在onPageStarted()方法内

调用ProgressDialog对象的show()方法

在onPageFinshed()方法内

调用ProgressDialog对象的dismiss()方法

package com.tsh.mywebview;

import android.app.Activity;
import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends Activity {
    private WebView webview;
    private ProgressDialog pd;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);

        pd=new ProgressDialog(this);
        pd.setMessage("正在加载...");

        //webview的简单设置
        webview=(WebView) findViewById(R.id.wv_internet);
        webview.loadUrl("https://www.baidu.com");
        WebSettings websettings=webview.getSettings();
        websettings.setSupportZoom(true);
        websettings.setBuiltInZoomControls(true);
        webview.setWebViewClient(new WebViewClient(){
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                pd.show();
            }
            @Override
            public void onPageFinished(WebView view, String url) {
                pd.dismiss();
            }
        });

    }
    //后退键
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(keyCode==KeyEvent.KEYCODE_BACK&&webview.canGoBack()){
            webview.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
    //菜单键
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        menu.add(0, 0, 0, "刷新");
        menu.add(0, 0, 1, "后退");
        menu.add(0, 0, 2, "前进");
        return super.onCreateOptionsMenu(menu);
    }
    //菜单点击事件
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getOrder()) {
        case 0:
            webview.reload();
            break;
        case 1:
            if(webview.canGoBack()){
                webview.goBack();
            }
            break;
        case 2:
            if(webview.canGoForward()){
                webview.goForward();
            }
            break;
        }
        return super.onOptionsItemSelected(item);
    }

}
时间: 2024-10-25 04:51:49

[android] WebView自定义浏览器的相关文章

Android WebView自定义处理错误页面显示(404等)

关键代码以下: [java] view plaincopyprint? @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { //用javascript隐藏系统定义的404页面信息 String data = "Page NO FOUND!"; view.loadUrl("javascript:document.bo

android webview(外部浏览器)调起app

最近写的项目中涉及外部浏览器以及项目webview中调起app,所以总结下,和大家分享下. 总的实现方法还是比较简单的, 1:在清单中注册 首先在AndroidManifest文件中,注册一个过滤器 <intent-filter > <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <intent-filter> <action

Android WebView自定义错误页面笔记

需求: WebView加载H5页面遇到错误时,需要修改系统默认的页面,采用自己定制的页面. 解决方案与过程: 1.最开始采用的是webView.loadDataWithBaseUrl加载一段字符串: String data="<a onClick=\"window.history.back()\" >页面错误,点击刷新</a>"; mWebView.loadDataWithBaseURL("", data, "t

android WebView网页浏览器

组件位置:composite>WebView .xml 1 <WebView 2 android:id="@+id/webview_pipeweb" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:background="@color/white" /> .java 1 private

Android 仿QQ浏览器WebView,滑动隐藏显示ActionBar效果

Android 仿QQ浏览器,滑动隐藏显示ActionBar效果. 往上推,是一个ScrollView会将,actionbar以及内容往上推,当actionbar消失后,将滚动Webview的内容. 此效果是基于QuickReturnHeader源码,修改而来的,代码也不多,实现方法比较简单. 直接上demo:http://download.csdn.net/detail/xufeifandj/8388493 直接看效果图:

android 下 利用webview实现浏览器功能

android 下 利用webview实现浏览器功能: 1.界面添加WEBVIEW控件. 2.在界面.JAVA代码页面(protected void onCreate(Bundle savedInstanceState) 方法中)添加如下代码: //#region WebView wb=(WebView)findViewById(R.id.Wb_Main); //设置WebView属性,能够执行Javascript脚本 wb.getSettings().setJavaScriptEnabled(

android利用WebView实现浏览器的封装

android提供了封装浏览器的接口,可以让开发者利用自己的view显示网页内容.今天又实现研究了一下,利用WebView显示浏览器内容,还可以利用 WebViewClient显示自己需要的内容. 参考:http://developer.android.com/reference/android/webkit/WebView.html 效果如下: 上面两张图分别是首页的截图,当点击java时的截图.可以看到在浏览器上面已经没有地址栏了.这个是利用WebViewClient显示的内容.相关代码如下

Android WebView 开发教程

1.WebView的使用 (a). 创建WebView的实例加入到Activity中 WebView webview = new WebView(this); setContentView(webview); 或者在xml中配置WebView <Webview android:layout_width="match_parent" android:layout_height="match_parent" > </Webview> (b). 访

Android WebView 输入框键盘不弹出

问题 在Android中使用内嵌的WebView加载HTML网页时,如果html页面中存在输入框.那么在有些手机设备中,当输入框获取焦点时,系统输入法键盘无法正确弹出,从而无法完成正常的输入要求 在做APP时,自己也遇到了这个问题,以下是自己解决的方法,有可能不适合大家所遇到的情况,但值得借鉴~ WebView设置问题 有些时候我们设计的html页面并不能够很好的适应WebView,尤其我们的html页面是为PC浏览器设计的时候,当使用WebView来加载时,界面很可能会发生错乱,当input输