欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android自定义 WebView浏览器

程序员文章站 2024-03-02 10:33:04
webview是android中一个非常实用的组件,它和safai、chrome一样都是基于webkit网页渲染引擎,可以通过加载html数据的方式便捷地展现软件的界面。...

webview是android中一个非常实用的组件,它和safai、chrome一样都是基于webkit网页渲染引擎,可以通过加载html数据的方式便捷地展现软件的界面。

在布局文件中添加<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浏览器的内容就给大家介绍这么多,希望对大家有所帮助!