在布局文件中添加<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);
} }

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

  1. android WebView网页浏览器

    组件位置:composite>WebView .xml <WebView android:id="@+id/webview_pipeweb" android:layou ...

  2. ProgressBar+WebView实现自定义浏览器

    当我们使用浏览器浏览网页时,总会看到下图页面的样子,上面是一个地址栏,地址栏下面显示加载进度,加载完成后进入页面内容,带颜色的进度条总是少不了的,那样子看起来也舒服,如何实现自定义手机浏览器功能呢? ...

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

    android提供了封装浏览器的接口,可以让开发者利用自己的view显示网页内容.今天又实现研究了一下,利用WebView显示浏览器内容,还可以利用 WebViewClient显示自己需要的内容. 参 ...

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

    android 下 利用webview实现浏览器功能(一): 1.界面添加WEBVIEW控件. 2.在界面.JAVA代码页面(protected void onCreate(Bundle savedI ...

  5. android webview开发问题及优化汇总

    我们在native与网页相结合开发的过程中,难免会遇到关于WebView一些共通的问题.就我目前开发过程中遇到的问题以及最后得到的优化方案都将在这里列举出来.有些是老生常谈,有些则是个人摸索得出解决方 ...

  6. Android WebView 开发教程

    声明在先:必须在AndroidMainfest.xml 里面声明权限,否则在Java里面编写的所有WebView浏览网页的代码都无法正常使用 <uses-permission android:n ...

  7. Android WebView 开发详解(二)

    转载请注明出处  http://blog.csdn.net/typename/article/details/39495409 powered by miechal zhao   概览: Androi ...

  8. android WebView, WebChromeClient和WebViewClient加载网页基本用法

    WebView, WebChromeClient和WebViewClient加载网页基本用法 webview是android中的浏览器控件,在一些手机应用中常会用到b/s模式去开发应用,这时webvi ...

  9. android WebView详解,常见漏洞详解和安全源码

    这篇博客主要来介绍 WebView 的相关使用方法,常见的几个漏洞,开发中可能遇到的坑和最后解决相应漏洞的源码,以及针对该源码的解析.  转载请注明出处:http://blog.csdn.net/se ...

随机推荐

  1. Linux下替代grep高效文本搜索工具

    1.ack yum install ack 2.ag git clone https://github.com/ggreer/the_silver_searcher.git yum install a ...

  2. Nanui 教程

    彩票自动投注软件定制-联灬系-\加/Q;2943075966 黑/科/技问/世.详情直接添加咨询.信/誉/文本 最近接到一个项目 是关于构建一套 电脑端会员管理系统    但考虑到个人比较喜欢写Web ...

  3. 简单的C# Socket通信实例

    一.套接字(socket)概念 套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元.它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本 ...

  4. Bash/Shell-脚本整理(长期更新)

    轮询检测Apache状态并启用钉钉报警 #!/bin/bash shell_user="root" shell_domain="apache" shell_li ...

  5. C语言实现windows进程遍历

    #include <windows.h> #include <tlhelp32.h> //进程快照函数头文件 #include <stdio.h> int main ...

  6. JavaScript基础(1)-ECMAScript

    一.JavaScript简介 1.JavaScript历史背景 布兰登 • 艾奇(Brendan Eich,1961年-),1995年在网景公司,发明的JavaScript. 刚开始JavaScrip ...

  7. Vue.js 60 分钟快速入门

    Vue.js 60 分钟快速入门 转载 作者:keepfool 链接:http://www.cnblogs.com/keepfool/p/5619070.html Vue.js介绍 Vue.js是当下 ...

  8. .net core Error -4090 EADDRNOTAVAIL address not available”

    问题原因:IP地址错误或者网络未开

  9. Shell - 简明Shell入门09 - 重定向(Redirection)

    示例脚本及注释 #!/bin/bash pwd > 1.log # 输出重定向到指定文件 date 1> 1.log # ">"与"1>" ...

  10. 锐捷客户端下虚拟机VMware无法联网的问题

    打开VMware,选择右下角的网络适配器,设置为NAT模式. 如果还不能上网,则打开电脑的任务管理器,保证VMwate的服务保持开启. 但是锐捷客户端,会自动检测并且关闭VMware NAT Serv ...