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);
}
}
- Android WebView的使用
- Android WebView的使用
- Android-WebView的使用
- android webview的使用
- android webview.的使用
- android WebView的使用
- Android webview的使用
- android webView的使用
- Android-WebView 的使用
- android webview的使用
- Android WebView的使用
- Android webview的使用
- Android WebView的使用
- Android webview的使用
- Android WebView的使用
- Android WebView 的使用
- android webview 的使用
- Android WebView的使用
- JQuery取消和注册对象Click事件同时防止多播委托
- Linux FTP服务器 vsftp
- spring+spring mvc +mybatis项目创建
- Ajax原生态
- IOS截屏一个UIView,以png或者jpg格式保存到指定目录下
- Android webview的使用
- Access与SQL中的IsNull(),IS NULL的区别
- python字符串连接效率比较(使用+连接)
- 密谍伙伴(X Company)
- Sitemesh 3 的使用及配置
- iOS Storyboard、xib中的UIScrollView使用autolayout
- git让某个文件回到某个版本
- Android Universal Image Loader 源码分析-超详细,超全面
- linux inode 详解