最近项目开发用到了WebView,简单整理了一下我的代码:
1.xml:activity_main
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#f6f6f7" >
<RelativeLayout
android:id="@+id/web_title_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<ImageView
android:id="@+id/imageview_banner_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:padding="10dp"
android:src="@drawable/home_back" />
<TextView
android:id="@+id/tv_banner_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="我的"
android:textColor="#000000"
android:textSize="16sp" />
<TextView
android:id="@+id/tv_banner_refresh"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="40dip"
android:text="刷新"
android:textSize="18sp"
android:gravity="center_vertical"
android:layout_marginRight="10dp"/>
</RelativeLayout>
<WebView
android:layout_below="@id/web_title_layout"
android:id="@+id/banner_webView"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
2.MainActivity:
public class MainActivityextends Activity implements BaseActivity {
private ImageView imageview_banner_back;
private WebView banner_webView;
private TextView tv_banner_refresh,tv_banner_title;
private ProgressDialog dialog;
private Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
setListener();
initDate();
}
@Override
public void initView() {
AppContext.getInstance().addActivity(this);
banner_webView=(WebView) findViewById(R.id.banner_webView);
imageview_banner_back=(ImageView) findViewById(R.id.imageview_banner_back);
tv_banner_refresh=(TextView) findViewById(R.id.tv_banner_refresh);
tv_banner_title=(TextView) findViewById(R.id.tv_banner_title);
context=BannerWebViewActivity.this;
}
@Override
public void setListener() {
imageview_banner_back.setOnClickListener(this);
tv_banner_refresh.setOnClickListener(this);
}
@Override
public void initDate() {
String url="http://www.baidu.com/";
banner_webView.loadUrl(url);
//以下代码为选填
//支持javascript
banner_webView.getSettings().setJavaScriptEnabled(true);
// 设置可以支持缩放
banner_webView.getSettings().setSupportZoom(true);
// 设置出现缩放工具
banner_webView.getSettings().setBuiltInZoomControls(true);
//扩大比例的缩放
banner_webView.getSettings().setUseWideViewPort(true);
//自适应屏幕
banner_webView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
banner_webView.getSettings().setLoadWithOverviewMode(true);
//获取屏幕焦点
banner_webView.requestFocus();
banner_webView.setWebChromeClient(new WebChromeClient(){
@Override
public void onReceivedTitle(WebView view, String title) {
// TODO Auto-generated method stub
super.onReceivedTitle(view, title);
tv_banner_title.setText(title);
}
//网页加载进度
@Override
public void onProgressChanged(WebView view, int newProgress) {
// TODO Auto-generated method stub
if (newProgress==100) {
closeDialog();
}else{
openDialog(newProgress);
}
}
private void openDialog(int newProgress) {
// TODO Auto-generated method stub
if (dialog==null) {
dialog=new ProgressDialog(context);
dialog.setMessage("加载中");
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
dialog.setProgress(newProgress);
dialog.show();
}else{
dialog.setProgress(newProgress);
}
}
private void closeDialog() {
// TODO Auto-generated method stub
if (dialog!=null&&dialog.isShowing()) {
dialog.dismiss();
dialog=null;
}
}
});
banner_webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
view.loadUrl(url);
return super.shouldOverrideUrlLoading(view, url);
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
// TODO Auto-generated method stub
super.onReceivedError(view, errorCode, description, failingUrl);
view.loadUrl("file:///android_asset/error.html");
}
});
}
//改写物理按键--返回到逻辑
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode==KeyEvent.KEYCODE_BACK) {
if (banner_webView.canGoBack()) {
banner_webView.goBack();
return true;
}else{
finish();//退出程序
}
}
return super.onKeyDown(keyCode, event);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.imageview_banner_back:
this.finish();
break;
case R.id.tv_banner_refresh:
banner_webView.reload();
break;
default:
break;
}
}
}
第一次写博客,多多捧场…..