在布局文件中添加<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. 初识Identity并添加身份验证管理页面

    目录 初识Identity并添加身份验证管理页面 前言 什么是ASP.NET Core Identity 创建带有身份验证的WebApp 尝试运行 检查解决方案中的项目文件 发现问题 原因 解决问题 ...

  2. 如何将Skyline66嵌入WPF中

    1.新建WPF项目: 2.添加引用 .net引用:System.Windows.Forms和WindowsFormsIntegration skyline引用:AxInterop.TerraExplo ...

  3. VS2017 v15.8.0 Task ExpandPriContent failed. Illegal characters in path

    昨天更新了VS到最新版本v15.8.0,但是编译UWP出现了操蛋的bug. 谷歌一下,vs社区已经有答案了. 打开.csproj文件,在节点 <PropertyGroup> 里面,加上一行 ...

  4. EF使用MySql DBFirst产品的问题总结

    一.实体数据模型向导->新建连接->更改数据源  找不到MySql Batabase选项. 解决:需求安装以下两个插件(mysql官网都可以找到)(注意版本,后面会讲到) 1.MySql ...

  5. MyBatis全局配置文件标签详解

    一.全局配置文件结构 configuration 配置 properties 属性:可以加载properties配置文件的信息 settings 设置:可以设置mybatis的全局属性 typeAli ...

  6. spring IOC理解

    用spring做了几个项目后发现,对spring的IOC理解还是不够清晰,今天就来总结下自己的理解(个人的一些见解) 以前用jsp+servlet做网站时,只是分了显示层(jsp),控制层(servl ...

  7. CSS中text-shadow的几个好看的文字demo及其代码

    最近有看到一些镂空的或者立体的文字设计图非常好看,然后想了想,应该是使用text-shadow来实现的,这里我贴出我仿的八个demo,分享给大家 首先是HTML代码 <div class=&qu ...

  8. iOS-发送短信验证码倒计时

    /** 发送手机验证码 */ -(void)startSenderYzmMessage{ __block ; //倒计时时间 dispatch_queue_t queue = dispatch_get ...

  9. 《Python编程从入门到实践》--- 学习过程笔记(2)变量和简单数据类型

    一.变量无需声明 二.变量命名规则 (1)变量名只能包括字母.数字和下划线: (2)变量名不能包含空格: (3)变量名不能使用Python关键字和函数名(保留字不可以做变量名); (4)简短易懂,清晰 ...

  10. 不能将 CHECK_POLICY 和 CHECK_EXPIRATION 选项设为 OFF (关)

    数据库用户信息死活无法修改..老是出现错误当 MUST_CHANGE 为 ON (开)时,不能将 CHECK_POLICY 和 CHECK_EXPIRATION 选项设为 OFF (关). (Micr ...