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);
}
}
在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);
}
}
相关文章推荐
- android开发中WebView控件的实例与注意要点——个人主页浏览器简易实现
- android开发中WebView控件的实例与注意要点——个人主页浏览器简易实现
- android开发中WebView控件的实例与注意要点——个人主页浏览器简易实现
- 【React Native开发】React Native控件之WebView组件详解以及实例使用(22)
- Android开发中使用WebView控件显示找不到网页的解决方法
- Android开发实践(三)WebView(网络视图)使用实例
- Android开发中使用WebView控件浏览网页的方法详解
- android UI控件之webview控件使用实例:加载网页到webview中
- Android开发---WebView控件的使用
- android开发 友盟推送点击Notification使用WebView加载url同时会调用系统浏览器的问题
- 【Android】Web开发之使用WebView控件展示Web页面
- android开发android webView 使用方法
- android开发之android webView使用方法
- 求助 android开发中 如果两个控件的id相同 会怎样?如何使用findviewbyid ()寻找到?
- android控件之WebView及指定浏览器
- Android开发之WebView组件的使用解析
- Android中WebView控件的基本使用
- webView控件基本使用(android)
- Android开发---Android下WebView控件详解
- Android应用开发之(WebView中loadData与loadDataWithBaseURL的使用上的区别)[转]