先来看下webview在一些App当中的应用实例,类似网易 今日头条等新闻类APP中基本都有用到,可以看到顶部栏中间显示的链接是网页链接
接下来我们就来看下webview究竟如何使用
思路:1.我们希望使用当前程序来加载webview页面,而不是通过使用Android系统默认浏览器加载页面。需要实现 setWebViewClient()方法,重写其shouldOverrideUrlLoading(WebView view, String url)方法来实现页面加载
2.实现类似上面导航栏效果,导航栏中间展示网页链接或者网页名称。通过setWebChromeClient()方法,重写 其onReceivedTitle(WebView view, String title)方法
具体代码
配置文件MainActivity.xml
<span style="font-size:14px;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<RelativeLayout
android:id="@+id/rl_container"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/btn_return"
android:layout_width="wrap_content"
android:layout_height="40dip"
android:text="@string/title_return"
android:layout_alignParentLeft="true"/>
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:ellipsize="end"/>
<Button
android:id="@+id/btn_refresh"
android:layout_width="wrap_content"
android:layout_height="40dip"
android:text="@string/title_refresh"
android:layout_alignParentRight="true"/>
</RelativeLayout>
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/rl_container"/>
</RelativeLayout>
</span>
MainActivity中
<span style="font-size:14px;">public class MainActivity extends ActionBarActivity {
private WebView webView;
private Button returnButton,refreshButton;
private TextView titleTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
titleTextView= (TextView) findViewById(R.id.tv_title);
returnButton= (Button) findViewById(R.id.btn_return);
refreshButton= (Button) findViewById(R.id.btn_refresh);
webView= (WebView) findViewById(R.id.webView);
<span style="color:#ff0000;"> webView.loadUrl("http://www.baidu.com");</span>
<span style="color:#ff0000;"> webView.setWebChromeClient(new WebChromeClient()</span>{
@Override
public void onReceivedTitle(WebView view, String title) {
titleTextView.setText(title);
super.onReceivedTitle(view, title);
}
});
//项目自身调用,而不是采用手机自带浏览器调用
<span style="color:#ff0000;">webView.setWebViewClient(new WebViewClient()</span>{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return super.shouldOverrideUrlLoading(view, url);
}
});
returnButton.setOnClickListener(new MyListener());
refreshButton.setOnClickListener(new MyListener());
}
class MyListener implements View.OnClickListener {
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.btn_return:
finish();
break;
case R.id.btn_refresh:
webView.reload();
break;
}
}
}
}
</span>
效果 别忘了网络权限,在主配置文件中:
<uses-permission android:name="android.permission.INTERNET"/>
ok,功能基本实现,至于后续在webview中下载文件,cookie存储相关先不做研究。
实现以后,不知道你们有没有这样的疑问,既然webview功能这么强大,而且html5已经很好的支持手机页面,那为什么还要做客户端的开发呢?webview是很强大,也确实有很多实际项目就用html5来实现手机页面,根本不用客户端;但是webview有其致命的缺点,最早的facebook曾经尝试用webview来实现手机App的研发,很快他们就放弃了,因为webview加载对手机耗电量,手机性能等很多因素消耗非常大,用户体验会很差,这也是为什么不完全采用webview的主要原因。
看完觉得还可以的,记得点赞留言。