Android webview的使用

来源:互联网 发布:麦子学院软件测试 编辑:程序博客网 时间:2024/05/21 07:10

xml文件:

<?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" >
    <ProgressBar
        android:id="@+id/forum_pb"
        style="@android:style/Widget.ProgressBar.Horizontal"
        android:layout_width="match_parent"
        android:layout_height="3dp"
        android:max="100"
        android:progressDrawable="@drawable/progress_bar_states" />
    <WebView
        android:id="@+id/forum_webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>


progress_bar_states.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >


    <item android:id="@android:id/background">
        <shape>
            <corners android:radius="2dp" />


            <gradient
                android:angle="270"
                android:centerColor="#E3E3E3"
                android:endColor="#E6E6E6"
                android:startColor="#C8C8C8" />
        </shape>
    </item>
    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <corners android:radius="2dp" />


                <gradient
                    android:centerColor="#4AEA2F"
                    android:endColor="#31CE15"
                    android:startColor="#FF7F24" />
            </shape>
        </clip>
    </item>


</layer-list>


.Java

public class Forum_FeedBook_Act extends BaseActivity {


private WebView webView;
private ProgressBar progressBar;
private String urlPath = null;
private String title = null;
private final static int UPDATEPROGRESSBAR = 9;
private final static int PROGRESSBARGONE = 10;
private  Handler mHandler = new Handler() {


@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);


if (msg.what == UPDATEPROGRESSBAR) {//设置进度
int process = msg.getData().getInt("process", 0);
// 设置进度条当前的完成进度
progressBar.setProgress(process);


} else if (msg.what == PROGRESSBARGONE) {//设置进度条隐藏
progressBar.setVisibility(View.GONE);
}
}


};


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_forum);
urlPath = getIntent().getExtras().getString("urlpath");
title = getIntent().getExtras().getString("forumtitle");
setPageTitle();
initContr();
if (!getNetworkType()) {
T.show(this, getResources().getString(R.string.network_error), 0);
return;
}
if (urlPath != null) {
initWebView();
} else {
T.show(Forum_FeedBook_Act.this, "无效的路径", 0);
}
}


private void initContr() {
webView = (WebView) findViewById(R.id.forum_webview);
progressBar = (ProgressBar) findViewById(R.id.forum_pb);
}


@SuppressLint({ "SetJavaScriptEnabled", "NewApi", "HandlerLeak" })
private void initWebView() {
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setBuiltInZoomControls(true); // 显示放大缩小 controler
settings.setSupportZoom(true); // 可以缩放
// 设置加载进来的页面自适应手机屏幕


if (SystemWorkUtils.getAndroidSDKVersion() > 11) {
settings.setDisplayZoomControls(false);
}


webView.loadUrl(urlPath);
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
if (newProgress == 100) {
sendRefreshMsg(100);
new Handler().postDelayed(new Runnable() {


@Override
public void run() {
Message msg = Message.obtain();
msg.what = PROGRESSBARGONE;
mHandler.sendMessage(msg);
}
}, 500);


} else {
progressBar.setVisibility(View.VISIBLE);
sendRefreshMsg(newProgress);
}
}
});
}


public void onResume() {
super.onResume();
MobclickAgent.onResume(this); // 统计时长
}


public void onPause() {
super.onPause();
MobclickAgent.onPause(this);
}


@Override
protected void onDestroy() {
super.onDestroy();
webView.stopLoading();
}


private void setPageTitle() {
// 实现自定义title
setCustomTitle();
// 显示左边按钮
setHideTopLeftView(false);
setTopLeftViewBM(R.drawable.btn_style_goback_button);
// 标题
setTitle(title);
setTitleSize(20);
// 显示右边按钮
setHideTopRightView(true);
setHideTopRightView2(true);
setHideTopRightView3(true);


setTopLeftViewClick(new OnClickListener() {


@Override
public void onClick(View v) {
finish();
overridePendingTransition(R.anim.tran_pre_in, R.anim.tran_pre_out);
}
});
}


@Override
// 设置回退
// 覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
webView.goBack(); // goBack()表示返回WebView的上一页面
return true;
}
finish();// 结束退出程序
overridePendingTransition(R.anim.tran_pre_in, R.anim.tran_pre_out);
return false;
}


/**
* 发送消息,通知进度条更新

* @param process
*/
private void sendRefreshMsg(int process) {
Message msg = Message.obtain();
Bundle bundle = new Bundle();
bundle.putInt("process", process);
msg.setData(bundle);
msg.what = UPDATEPROGRESSBAR;
mHandler.sendMessage(msg);


}


}



0 0
原创粉丝点击