Android WebView 应用界面开发教程

Android WebView 应用界面开发教程,第1张

概述WebView组件本身就是一个浏览器实现,Android5.0增强的WebView基于ChromiumM37,直接支持WebRTC、WebAudio、WebGL。开发者可以直接在WebView中使用聚合(Polymer)和Material设计。

WebVIEw组件本身就是一个浏览器实现,AndroID5.0增强的WebVIEw基于Chromium M37,直接支持WebRTC、WebAudio、WebGL。开发者可以直接在WebVIEw中使用聚合(polymer)和Material设计。

一.WebVIEw浏览网页(加载线上URL)

WebVIEw提供了很多方法执行浏览器 *** 作,常用方法如下:

voID goBack():后退
voID goForward():前进。
voID goBackOrForward(int step):step为正表示前进,step为负表示后退。
voID loadUrl(String url):加载指定URL对应的网页。
boolean zoomIn():放大网页。
boolean zoomOut():缩小网页。

实例:迷你浏览器

该实例包含两个界面,第一个界面包括输入网址和打开网址,第二个界面包含一个WebVIEw,用于显示第一个界面输入的URL对应的界面。程序代码如下:

第一个界面

public class MainActivity extends AppCompatActivity {private EditText mEditUrl;private button mBtnopen;@OverrIDeprotected voID onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentVIEw(R.layout.activity_main);mEditUrl = (EditText) findVIEwByID(R.ID.edit_url);mBtnopen = (button) findVIEwByID(R.ID.btn_open);mBtnopen.setonClickListener(new VIEw.OnClickListener() {@OverrIDepublic voID onClick(VIEw v) {Intent intent = new Intent(MainActivity.this,WebVIEwActivity.class);String url = mEditUrl.getText().toString();intent.putExtra("url",url);startActivity(intent);}});}}

这个界面很简单,一个输入框,一个按钮,分别用于输入网址和打开WebVIEw。

第二个界面

public class WebVIEwActivity extends AppCompatActivity {private WebVIEw mWebVIEw;@OverrIDeprotected voID onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentVIEw(R.layout.activity_web_vIEw);mWebVIEw = (WebVIEw) findVIEwByID(R.ID.web_vIEw);Intent intent = getIntent();String url = intent.getStringExtra("url");mWebVIEw.loadUrl(url);mWebVIEw.getSettings().setJavaScriptEnabled(true);mWebVIEw.setWebVIEwClIEnt(new WebVIEwClIEnt(){});}@OverrIDepublic voID onBackpressed() {if (mWebVIEw != null && mWebVIEw.canGoBack()){mWebVIEw.goBack();}else {super.onBackpressed();}}}

这段代码调用WebVIEw的loadUrl(String url)方法加载、显示该URL对应的网页,并设置使其支持JavaScript。如果打开WebVIEw过程中跳转到浏览器,则通过设置WebVIEwClIEnt来是其在WebVIEw中显示。

并重写了onBackpressed()方法,当WebVIEw不为空且WebVIEw可以回退时,返回上一个WebVIEw界面,而不是直接回退到上一个Activity。

由于该应用需要访问互联网,所以需要在AndroIDManifest.xml中配置:

<uses-permission androID:name="androID.permission.INTERNET"/>

该实例的效果图如下:

二.WebVIEw加载HTML代码

WebVIEw提供了一个loadData(String data,String mimeType,String enCoding)方法,该方法可用于加载并显示HTML代码,但该方法会发生乱码。

WebVIEw还提供了一个loadDataWithBaseURL(String baseUrl,String data,String enCoding,String historyUrl)方法,该方法是loadData(String data,String enCoding)方法的增强版,不会产生乱码。该方法的几个参数说明:

data:指定要加载的HTML代码。

mimeType:指定HTML的MIME类型,对于HTML可指定为text/HTML。

enCoding:指定HTML代码编码所用的字符集,比如指定为GBK。

WebVIEw加载HTML代码:

public class MainActivity extends AppCompatActivity {private WebVIEw mShowWebVIEw;@OverrIDeprotected voID onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentVIEw(R.layout.activity_main);mShowWebVIEw = (WebVIEw) findVIEwByID(R.ID.show_web_vIEw);StringBuilder sb = new StringBuilder();//拼接一段HTML代码sb.append("<HTML>");sb.append("<head>");sb.append("<Title> 欢迎您 </Title>");sb.append("</head>");sb.append("<body>");sb.append("<h2> 欢迎您访问<a href = \"http:www.baicu.com\">" + "百度一下</a></h2>");sb.append("</body>");sb.append("</HTML");//加载并显示HTML代码mShowWebVIEw.loadDataWithBaseURL(null,sb.toString(),"text/HTML","utf-8",null);}}

该实例运行效果如下:

三.WebVIEw中的JavaScript调用AndroID方法

在WebVIEw中调用AndroID方法需要三步:

调用WebVIEw关联的WebSettings的setJavaScriptEnabled(true)启用JavaScript调用功能。

调用WebVIEw的addJavaScriptInterface(Object object,String name)方法将object对象暴露给JavaScript对象。

在JavaScript脚本中通过刚才暴露的name对象调用AndroID方法。

写一个在JavaScript中调用AndroID方法的实例,该实例界面包含一个WebVIEw组件,用于显示HTML页面。Activity代码如下:

public class MainActivity extends AppCompatActivity {private WebVIEw mWebVIEw;@OverrIDeprotected voID onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentVIEw(R.layout.activity_main);mWebVIEw = (WebVIEw) findVIEwByID(R.ID.web_vIEw);//使用file协议加载本地assets目录下的HTML页面mWebVIEw.loadUrl("file:///androID_asset/test.HTML");//获取WebVIEw的设置对象WebSettings webSettings = mWebVIEw.getSettings();//开启JavaScript调用webSettings.setJavaScriptEnabled(true);//将MyObject对象暴露给JavaScript对象mWebVIEw.addJavaScriptInterface(new MyObject(this),"myObj");}}

在上面代码中开启了JavaScript调用AndroID方法的功能,并将AndroID应用中的MyObject对象暴露给JavaScript脚本,暴露成JavaScript脚本中名为myObj的对象。

MyObject代码如下:

public class MyObject {private Context context;public MyObject(Context context) {this.context = context;}//该方法将会暴露给JavaScript脚本调用@JavaScriptInterfacepublic voID showToast(String name) {Toast.makeText(context,name + ",您好!",Toast.LENGTH_SHORT).show();}//该方法将会暴露给JavaScript脚本调用@JavaScriptInterfacepublic voID showList() {//显示一个普通的列表对话框new AlertDialog.Builder(context).setTitle("图书列表").setIcon(R.mipmap.ic_launcher).setItems(new String[]{"head First AndroID","head First Java","Thinking in Java"},null).setPositivebutton("确定",null).create().show();}}

MyObject中包含了两个方法,showToast()和showList()方法,且这两个方法使用了@JavaScriptInterface修饰,使得这两个方法会暴露给JavaScript脚本,从而允许JavaScript脚本通过myObj来调用这两个方法。HTML页面代码如下:

<!DOCTYPE HTML><HTML><head><Meta http-equiv="content-type" content="text/HTML; charset=utf-8"/><Title> Js调用AndroID</Title></head><body><!-- 注意此处的myObj是AndroID暴露出来的对象--><input type="button" value="打招呼"onclick="myObj.showToast('AndroID');"/><input type="button" value="图书列表"onclick="myObj.showList();"/></body></HTML>

当用户点击页面上的两个按钮时,该页面的JavaScript脚本会通过myObj调用AndroID方法。

运行该实例,点击第一个按钮,效果图如下:

点击第二个按钮,效果图如下:

 

以上所述是小编给大家介绍的AndroID WebVIEw 应用界面开发教程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!

总结

以上是内存溢出为你收集整理的Android WebView 应用界面开发教程全部内容,希望文章能够帮你解决Android WebView 应用界面开发教程所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1148674.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存