考虑了一会儿 ,博主还是把这篇博客安排在进阶篇里面。
webview,顾名思义 就类似web前端一样,至少有那么点关系(不知道对不对 ,反正我是这么理解的),就是两者都是连接网页,进行一系列网络操作的,所以
大家在学习,交流webview时,第一时间就要给自己的android程序加上网络权限:
<uses-permission android:name="android.permission.INTERNET"/>
然后就是布局文件了,activity_main:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.webview.MainActivity">
<TextView
android:id="@+id/txt"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center"
android:text="正在加载。。。。"
android:textSize="18sp" />
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="8">
</WebView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
android:id="@+id/back"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="后退"
android:textSize="19sp" />
<TextView
android:id="@+id/gobtn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="前进"
android:textSize="19sp" />
<TextView
android:id="@+id/refrech"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="刷新"
android:textSize="19sp" />
</LinearLayout>
</LinearLayout>
布局文件我安排了三个按钮(最下面,博主的按钮习惯用textview):前进,后退,刷新,然后还隐藏了一个textview显示加载提示(最上面),好 接下来就是MainActivity了:
public class MainActivity extends Activity implements View.OnClickListener {
//几个按钮,以及加载提示
private TextView back,go,refrech,txt;
//网页
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//控件id
back = (TextView) findViewById(R.id.back);
go = (TextView) findViewById(R.id.gobtn);
refrech = (TextView) findViewById(R.id.refrech);
txt = (TextView) findViewById(R.id.txt);
webView = (WebView) findViewById(R.id.webview);
//按钮的点击事件
back.setOnClickListener(this);
go.setOnClickListener(this);
refrech.setOnClickListener(this);
//进行webview的操作的方法
init();
}
//设置和启动webview
private void init(){
/**
* 在开启webview之前要强调一点:如果不确定网页是js设计还是javascript
* 个人建议用下面的代码统一规划一下,这么做是防止某些图片无法加载的情况出现
*/
webView.getSettings().setJavaScriptEnabled(true);
//设置webview优先使用缓存加载
webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
//开启webview,个人建议前面定一个string,把网址装起来,这样便于代码的整洁
webView.loadUrl("www.baidu.com");
//设置webview的启动方式
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
/**
* 这里说一下下面的返回值:
* true:在webview里面打开网页,可以想象成微信里面加载网页一样
* false:使用第三方或系统自带的浏览器打开网页,如同跳转
*/
return true;
}
});
//当打开界面时,我们设置一个显示网页进度的进度条,当然也可以设置成圆环或别的什么
webView.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
setTitle("%"+newProgress);
//当界面玩全打开,隐藏进度条和提示字符
if (newProgress == 100){
theprogress_close();
txt.setVisibility(View.GONE);
}else{
//圆形进度条
theProgress_open(newProgress);
}
super.onProgressChanged(view, newProgress);
}
});
}
//进度条打开
private void theProgress_open(int p){
setProgressBarIndeterminateVisibility(true);
setProgress(p);
}
//进度条关闭
private void theprogress_close(){
setProgressBarIndeterminateVisibility(false);
}
//点击事件的集中处理(让mainactivity实现onclick接口)
@Override
public void onClick(View v) {
switch (v.getId()){
//使网页返回上页
case R.id.back:
webView.goBack();
break;
//使网页前进一页
case R.id.gobtn:
webView.goForward();
break;
//刷新当前界面
case R.id.refrech:
webView.reload();
break;
}
}
//
}
嗯嗯 ,webview的简单运用就这些啦 ,本博主还是很相信自己的注释的