android:
id="@+id/webview"
android:
layout_width="match_parent"
android:
layout_height="match_parent"
/>
主要代码:
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.graphics.Bitmap;
importandroid.os.Bundle;
importandroid.view.Menu;
importandroid.view.View;
publicclassMainActivityextendsActivityimplementsOnClickListener{
privateEditTextet_path;
privateButtonbt_entry;
privateWebViewwebview;
privateButtonbt_left;
privateButtonbt_right;
privateButtonbt_refresh;
privateProgressBarpd;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_path=(EditText)findViewById(R.id.et_path);
bt_entry=(Button)findViewById(R.id.bt_entry);
bt_left=(Button)findViewById(R.id.bt_left);
bt_right=(Button)findViewById(R.id.bt_right);
bt_refresh=(Button)findViewById(R.id.bt_refresh);
pd=(ProgressBar)findViewById(R.id.pd);
webview=(WebView)findViewById(R.id.webview);
bt_entry.setOnClickListener(this);
bt_left.setOnClickListener(this);
bt_right.setOnClickListener(this);
bt_refresh.setOnClickListener(this);
initSettings();
}
privatevoidinitSettings(){
webview.setWebViewClient(newWebViewClient(){
@Override
publicbooleanshouldOverrideUrlLoading(WebViewview,Stringurl){
et_path.setText(url);
returnsuper.shouldOverrideUrlLoading(view,url);
}
@Override
publicvoidonPageStarted(WebViewview,Stringurl,Bitmapfavicon){
pd.setVisibility(View.VISIBLE);
super.onPageStarted(view,url,favicon);
}
@Override
publicvoidonPageFinished(WebViewview,Stringurl){
pd.setVisibility(View.GONE);
super.onPageFinished(view,url);
addImageClickListener(webview);
}
});
webview.setWebChromeClient(newWebChromeClient(){
@Override
publicvoidonReceivedTitle(WebViewview,Stringtitle){
//TODOAuto-generatedmethodstub
super.onReceivedTitle(view,title);
}
@Override
publicvoidonProgressChanged(WebViewview,intnewProgress){
pd.setProgress(newProgress);
super.onProgressChanged(view,newProgress);
}
});
WebSettingssettings=webview.getSettings();
settings.setJavaScriptEnabled(true);
webview.addJavascriptInterface(newAndroidNative(),"imagelistener");
}
privatevoidaddImageClickListener(WebViewwebView){
webView.loadUrl("javascript:
(function(){"
+"varobjs=document.getElementsByTagName(\"img\");"
+"for(vari=0;i+"objs[i].onclick=function()"+"{"
+"window.imagelistener.openImage(this.src);"+//通过js代码找到标签为img的代码块,设置点击的监听方法与本地的openImage方法进行连接
"}"+"}"+"})()");
}
publicclassAndroidNative{
@JavascriptInterface
publicvoidopenImage(StringimageSrc){
Toast.makeText(getApplicationContext(),imageSrc,Toast.LENGTH_SHORT).show();
Intentintent=newIntent();
intent.putExtra("path",imageSrc);
intent.setClass(getApplicationContext(),ImageActivity.class);
startActivity(intent);
}
}
@Override
publicbooleanonCreateOptionsMenu(Menumenu){
//Inflatethemenu;thisaddsitemstotheactionbarifitispresent.
getMenuInflater().inflate(R.menu.main,menu);
returntrue;
}
@Override
publicvoidonClick(Viewv){
switch(v.getId()){
caseR.id.bt_entry:
Stringurl="http:
//"+et_path.getText().toString();
Toast.makeText(getApplicationContext(),url,Toast.LENGTH_SHORT).show();
webview.loadUrl(url);
break;
caseR.id.bt_left:
Toast.makeText(getApplicationContext(),"向后",Toast.LENGTH_SHORT).show();
webview.goBack();
break;
caseR.id.bt_right:
Toast.makeText(getApplicationContext(),"向前",Toast.LENGTH_SHORT).show();
webview.goForward();
break;
caseR.id.bt_refresh:
Toast.makeText(getApplicationContext(),"刷新",Toast.LENGTH_SHORT).show();
webview.reload();
break;
default:
break;
}
}
@Override
publicvoidonBackPressed(){
if(webview.canGoBack()){
webview.goBack();
}else{
super.onBackPressed();
}
}
}
实验内容(实验原理、运用的理论知识和数据、算法、程序、步骤和方法)
五、功能展示
刷新功能
前进功能
后退功能