WebView的使用(打开网页,下载文件)
在开发中经常在更多页面中用到WebView来显示一个网页,这个网页里面放有下载地址或者链接到别的网页等等。效果如下:
http://dl.iteye.com/upload/attachment/0076/5415/99c5c8ca-2092-3d31-91e6-35dc4b189da4.gif
这个示例很简单,代码中都有注释。下面直接上代码:
public class MainActivity extends Activity {private static final String URL = "http://demo.91yong.com/mobile/moreApp.jsp?type=2";private WebView wvShow;private ProgressBar pbLoading;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);wvShow = (WebView) findViewById(R.id.web_view);pbLoading = (ProgressBar) findViewById(R.id.pb_loading);wvShow.setDownloadListener(new DownloadListener() {@Overridepublic void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {// 监听下载功能,当用户点击下载链接的时候,直接调用系统的浏览器来下载Uri uri = Uri.parse(url);Intent intent = new Intent(Intent.ACTION_VIEW, uri);startActivity(intent);}});wvShow.setWebViewClient(new WebViewClient() {@Overridepublic void onPageFinished(WebView view, String url) {//页面加载完毕super.onPageFinished(view, url);if (pbLoading != null && pbLoading.getVisibility() == View.VISIBLE) {pbLoading.setVisibility(View.GONE);//进度条不可见}}@Overridepublic void onPageStarted(WebView view, String url, Bitmap favicon) {//页面开始加载super.onPageStarted(view, url, favicon);if (pbLoading != null && pbLoading.getVisibility() == View.INVISIBLE) {pbLoading.setVisibility(View.VISIBLE);//进度条可见}}}); wvShow.getSettings().setJavaScriptEnabled(true);//设置支持脚本wvShow.getSettings().setBuiltInZoomControls(true);// 设置支持缩放wvShow.getSettings().setDefaultZoom(ZoomDensity.FAR);// 屏幕自适应网页,如果没有这个,在低分辨率的手机上显示可能会异常wvShow.loadUrl(URL);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {MenuInflater inflater = getMenuInflater();inflater.inflate(R.menu.more_app, menu);return true;}@Overridepublic void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {super.onCreateContextMenu(menu, v, menuInfo);MenuInflater inflater = getMenuInflater();inflater.inflate(R.menu.more_app, menu);}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()) {case R.id.refresh: {// 刷新wvShow.loadUrl(URL);break;}case R.id.open_in_brower: {// 在浏览器中打开Uri uri = Uri.parse(URL);Intent it = new Intent(Intent.ACTION_VIEW, uri);startActivity(it);break;}}return true;}} activity_main.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <WebView android:id="@+id/web_view" android:layout_width="fill_parent" android:layout_height="fill_parent" /> <!-- 正在加载的提示 --> <ProgressBar android:id="@+id/pb_loading" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" style="?android:attr/progressBarStyle" /></RelativeLayout>
监听了菜单按钮:
<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"><item android:id="@+id/refresh" android:title="刷新"></item> <item android:id="@+id/open_in_brower" android:title="在浏览器中打开"></item></menu>
最后当然不要忘记权限:
<uses-permission android:name="android.permission.INTERNET" />
项目地址:
https://github.com/michaelye/WebViewDemo
页:
[1]