您的位置:首页 > 移动开发

Android webview控件(一) 使用webview开发浏览器实例

2017-09-14 11:19 681 查看
1.简介

在Android开发中,我们难免会使用到网页,而Android给我们提供了非常方便的加载网页的工具--Webview,其实webview在设计上就是独立的一个体系,虽然webview也是一个view,但是webview在加载,显示,绘制等方便,不同于我们使用的各种view:button,imageview,text等,webview中有独立的绘图引擎去绘制网页中的各种资源;

同时对于webview来说,其实webview本身就是一个浏览器,webview控件包含了浏览器的各种功能,google已经开放出了足够的接口,你只需要调用相应的接口,既可以实现一个简单的浏览器;

下面将会使用webview创建一个简单的浏览器;

该浏览器有一个editText,能够让用户输入网址,有一个button让用户点击相应响应加载网页操作,当前指添加了返回按键,让webview回滚上一个加载页面的操作,当然你也可以监听别的按键或者操作,进行上一页或者下一页的操作,这个看各自的设计逻辑;

xml布局文件代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.anana.sockettest.WebviewActivity">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">

<EditText
android:id="@+id/weburl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="7"
android:imeOptions="actionSearch"
android:text="http://blog.csdn.net/wuyuxing24/article/details/52089862"/>

<Button
android:id="@+id/searchurl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="搜索"/>
</LinearLayout>

<WebView
android:layout_weight="20"
android:id="@+id/webshow"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>

</LinearLayout>
activity中的代码主要是设置一些webview使用过程中需要设置的Websettings,去设置浏览器支持js脚本,适配屏幕,web的加载器等;
代码如下:

package com.anana.sockettest;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebResourceRequest;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;

public class WebviewActivity extends AppCompatActivity
{

private EditText weburl;
private WebView webshow;
private Button searchurl;

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_webview);
weburl = (EditText) findViewById(R.id.weburl);
webshow = (WebView) findViewById(R.id.webshow);
webshow.getSettings().setJavaScriptEnabled(true);
webshow.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webshow.getSettings().setSupportMultipleWindows(true);
webshow.getSettings().setBuiltInZoomControls(true);
webshow.setWebViewClient(new WebViewClient());
webshow.setWebChromeClient(new WebChromeClient());
webshow.setOnTouchListener(new View.OnTouchListener()
{
@Override
public boolean onTouch(View view, MotionEvent motionEvent)
{
Log.d("browser","motionEvent:"+motionEvent.toString());
return false;
}
});
webshow.loadUrl("http://cn.bing.com");

searchurl = (Button) findViewById(R.id.searchurl);
searchurl.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
String url = weburl.getText().toString();
Log.d("browser", "url:" + url);
webshow.getSettings().setJavaScriptEnabled(true);
webshow.loadUrl(url);
}
});

}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_SEARCH || keyCode == KeyEvent.KEYCODE_ENTER)
{
String url = weburl.getText().toString();
Log.d("browser", "url:" + url);
webshow.getSettings().setJavaScriptEnabled(true);
webshow.loadUrl(url);
}
if ((keyCode == KeyEvent.KEYCODE_BACK) && webshow.canGoBack())
{
webshow.goBack();
return true;
}

return super.onKeyDown(keyCode, event);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息