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浏览器的内容就给大家介绍这么多,希望对大家有所帮助!
问题内容: Javascript如何检测网站是加载到Android的常规浏览器中还是加载到另一个应用程序的WebView中?我想在这两种情况下运行略有不同的代码。 问题答案: 活动- > onCreate RES- >值-> strings.xml Java脚本
本文向大家介绍Android自定义Gallery控件实现3D图片浏览器,包括了Android自定义Gallery控件实现3D图片浏览器的使用技巧和注意事项,需要的朋友参考一下 本篇文章主要介绍如何使用自定义的Gallery控件,实现3D效果的图片浏览器的效果。 话不多说,先看效果。 上面是一个自定义的Gallery控件,实现倒影和仿3D的效果,下面是一个图片查看器,点击上面的小图片,可以在下面查看
我最近实现了shouldInterceptRequest方法来检测链接的时间“http://sitemercado.com.br/valida“点击在android浏览器中打开它,而不是在webview中内部打开,直到它工作为止。链接在浏览器中打开,但当我回来查看webview应用程序时,它也被加载了,我希望它只在浏览器中加载。 我的代码如下: 我哪里做错了?
然后它说没有预览可用。谁能告诉我这里出了什么问题。
我正在开发一个应用程序,用户可以在其中打开任意多个片段,但所有片段都是唯一类的对象。fragment类在其视图中只有一个WebView。每当用户点击WebView中的链接时,链接就会被加载到一个新的片段中。以下是如何将新片段替换为当前片段: 当用户点击后退按钮时: 一切正常,但我遇到了一些问题,当用户想回去的情况。关键是,当前一个片段从Backback弹出时,它的webview再次开始加载它的ur
我想加载facebook。com在webview中使用自定义CSS来更改一些内容。我使用jsoup,但每次启动应用程序时都会崩溃。 这是我的代码: Logcat输出 FATAL EXCEPTION: main Process:android.app., PID: 23936hread.mainRuntimeException:无法启动活动ComponentInfo{hread.java:5417}