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

Android之WebView的简单使用

2015-10-29 17:34 302 查看
最近项目开发用到了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;
}
}

}


第一次写博客,多多捧场…..
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: