码迷,mamicode.com
首页 > 移动开发 > 详细

Android---54---WebView初学

时间:2015-06-06 22:09:01      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:android   webview   

webView 组件本身就是一个浏览器实现,它的内核基于WebKit

 

1.使用WebView浏览网页:

常用方法:
void goBack():后退 
void goForward():前进
void loadUrl (String url):加载指定的URL对应的网页
void loadUrl("file:///android_asset/XX.html"):加载本地文件 
boolean zoomIn():放大网页
boolean zoomOut():缩小网页

 

Demo:

 

显示百度网页

 

布局文件:

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <EditText
            android:id="@+id/url"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" />

        <Button
            android:id="@+id/go"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="访问" />
    </LinearLayout>

    <WebView
        android:id="@+id/web"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

</LinearLayout>


 

Activity代码:

 

 

public class MainActivity extends Activity {

	WebView show;
	EditText urlText;
	Button goButton;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		show = (WebView) findViewById(R.id.web);
		show.getSettings().setJavaScriptEnabled(true);
		goButton = (Button) findViewById(R.id.go);
		urlText = (EditText) findViewById(R.id.url);
		
		goButton.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				String path = urlText.getText().toString();
				show.loadUrl(path);
			}
		});
	}
}


 

 

2.使用WebView加载HTML代码:

WebView提供了一个方法用于加载HTML代码:
loadData(String data ,String mimeType ,String encoding):

data:指定需要加载的HTML代码
mimeType:指定HTML代码的MIME类型,对于HTML代码可指定为text/html
encoding:指定HTML代码编码所用的字符集,比如GBK

 

 

HTML代码:

 

<html>
	<head
		<title>无标题文档</title>
	</head>
	
	<body>
		<p>
			使用WebView加载HTML代码:
			打开百度网页:
			<a href="http://www.baidu.com"> http://www.baidu.com</a>
		</p>
	</body>
</html>


 

Activity代码:

 

 

public class MainActivity extends Activity {

	WebView show;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		show = (WebView) findViewById(R.id.web);
		StringBuilder sb = new StringBuilder();

		sb.append("<html>" + "<head" + "<title>无标题文档</title>" + "</head>"
				+ "<body>" + "<p>" + "使用WebView加载HTML代码:" + "打开百度网页:"
				+ "<a href='http://www.baidu.com'> http://www.baidu.com</a>"
				+ "</p>" + "</body>" + "</html>");
		// 这个方法显示中文是乱码
		// show.loadData(sb.toString(), "text/html", "utf-8");
		show.loadDataWithBaseURL(null, sb.toString(), "text/html", "utf-8",
				null);
	}
}


 

 

 

3.使用WebView中的JavaScript调用Android方法:

 

为了让WebView中的JavaScript脚本调用Android方法,WebView提供了一个WebSettings工具类

调用其中的setJavaScriptEnabled (true)即可让WebView中的JavaScript调用Android方法。

 

addJavascriptInterface (Object object ,String name )方法负责把object对象暴露成JavaScript中的name对象


setAllowFileAccess(true);// 设置允许访问文件数据
setBuiltInZoomControls(true);// 设置支持缩放
setSavePassword(false); // 设置是否保存密码
setUserAgentString("Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X;en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334bSafari/531.21.10");//支持各种不同的设备

 

 

步骤:
1.调用WebView关联的WebSettings的setJavaScriptEnabled (true)启用JavaScript调用功能
2.调用addJavascriptInterface ()方法将object对象暴露给JavaScript
3.在JavaScript脚本中通过刚才暴露的name对象调用Android方法

 


Activity:

 

 

public class JsCallAndroid extends Activity {

	WebView webView;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_js_call_android);

		webView = (WebView) findViewById(R.id.webview);
		//在assets文件夹中的test
		webView.loadUrl("file:///android_asset/test.html");
		WebSettings webSettings = webView.getSettings();

		webSettings.setJavaScriptEnabled(true);
		// 将MyObject对象暴露给JavaScript脚本
		// 这样test.html页面中的JavaScript可以通过myObj来调用MyObject的方法
		webView.addJavascriptInterface(new MyObject(this), "myObj");
	}
}


 

 

MyObject:

 

 

public class MyObject {
	Context mContext;

	MyObject(Context c) {
		mContext = c;
	}

	// 该方法将会暴露给JavaScript脚本调用
	public void showToast(String name) {
		Toast.makeText(mContext, name + ",您好!", Toast.LENGTH_LONG).show();
	}

	// 该方法将会暴露给JavaScript脚本调用
	public void showList() {
		// 显示一个普通的列表对话框
		new AlertDialog.Builder(mContext)
				.setTitle("图书列表")
				.setIcon(R.drawable.ic_launcher)
				.setItems(
						new String[] { "疯狂Java讲义", "疯狂Android讲义",
								"轻量级Java EE企业应用实战" }, null)
				.setPositiveButton("确定", null).create().show();
	}
}


 

Android---54---WebView初学

标签:android   webview   

原文地址:http://blog.csdn.net/u013476556/article/details/46391567

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!