Android自定义 WebView浏览器
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浏览器的内容就给大家介绍这么多,希望对大家有所帮助!
上一篇: Android 动态改变布局实例详解