Java端
package com.baozilichao.jsandandroid;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.webkit.JavascriptInterface;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
private WebView mWebView = null;
Button but, but1, but2, but3, but4, but5;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
but = (Button) findViewById(R.id.but);
but1 = (Button) findViewById(R.id.but1);
but2 = (Button) findViewById(R.id.but2);
but3 = (Button) findViewById(R.id.but11);
but4 = (Button) findViewById(R.id.but21);
but5 = (Button) findViewById(R.id.but31);
mWebView = (WebView) findViewById(R.id.webview);
inindate();
showWebView();
}
private void dialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setMessage("只是要累死我!")
.setTitle("快累死了")
.setPositiveButton("已经累死,有事烧纸(真的想删除吗?)", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
mWebView.loadUrl("javascript:showHtmlcallJava2()");
dialogInterface.dismiss();
Toast.makeText(MainActivity.this, "你已经删除", Toast.LENGTH_SHORT).show();
}
}).
setNegativeButton("取消", new DialogInterface.OnClickListener() { //设置取消按钮
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
Toast.makeText(MainActivity.this, "取消", Toast.LENGTH_SHORT).show();
}
}).setNeutralButton("忽略", new DialogInterface.OnClickListener() {//设置忽略按钮
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
Toast.makeText(MainActivity.this, "忽略", Toast.LENGTH_SHORT).show();
}
});
//参数都设置完成了,创建并显示出来
builder.create().show();
}
private void inindate() {
//提示删除图片
but.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog();
}
});
//字号增加
but1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mWebView.loadUrl("javascript:addclick()");
}
});
//字号减小
but2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mWebView.loadUrl("javascript:disclick()");
}
});
//更改背景
but3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mWebView.loadUrl("javascript:backgroungclick1()");
}
});
but4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mWebView.loadUrl("javascript:backgroungclick2()");
}
});
but5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mWebView.loadUrl("javascript:backgroungclick3()");
}
});
}
@SuppressLint("SetJavaScriptEnabled")
private void showWebView() {
mWebView.requestFocus();
mWebView.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View view, int i, KeyEvent keyEvent) {
if (keyEvent.getAction() == KeyEvent.KEYCODE_BACK && mWebView.canGoBack()) {
}
return false;
}
});
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);//实现交互关键句
webSettings.setDefaultTextEncodingName("UTF-8");
class JsObject {
//js调用Java代码
@JavascriptInterface
public String toString() {
return "字符串";
}
@JavascriptInterface
public String HtmlcallJava() {
return "更改字符串";
}
@JavascriptInterface
public String HtmlcallJava2(final String Param) {
return "更改字符串" + Param;
}
//java调用js代码
@JavascriptInterface
public void JavacallHtml() {
runOnUiThread(new Runnable() {
@Override
public void run() {
mWebView.loadUrl("javascript:showFromHtml()");
Toast.makeText(MainActivity.this, "clickBtn", Toast.LENGTH_SHORT).show();
}
});
}
@JavascriptInterface
public void JavacallHtml2() {
runOnUiThread(new Runnable() {
@Override
public void run() {
mWebView.loadUrl("javascript:showFromHtml2(123)");
Toast.makeText(MainActivity.this, "clickBtn", Toast.LENGTH_SHORT).show();
}
});
}
}
mWebView.addJavascriptInterface(new JsObject(), "injiectObject");
mWebView.loadData("file:///android_asset/index.html", "text/html", null);
// mWebView.loadData("http://127.0.0.1:8020/Demo4/index.html", "text/html", null);
mWebView.addJavascriptInterface(new JsObject(), "jsObj");
mWebView.loadUrl("file:///android_asset/index.html");
// mWebView.loadUrl("http://127.0.0.1:8020/Demo4/index.html");
}
}
html端:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title></title>
<style>
* {
background: lightblue;
}
</style>
</head>
<body>
<br>
<br>
<br>
<input type="button" value="恢复图片" onclick="showHtmlcallJava()"/>
<br>
<input type="button" value="删除图片" onclick="showHtmlcallJava2()"/>
<br>
<div id="img_big">
<img id="img_circle" src="circle1.png"/>
</div>
<br>
<p id="texttest">这是一段测试文字</p>
<br>
<input type="button" value="字体+" onclick="addclick()"/>
<br>
<input type="button" value="字体-" onclick="disclick()"/>
<br>
<input type="button" value="背景1" onclick="backgroungclick1()"/>
<br>
<input type="button" value="背景2" onclick="backgroungclick2()"/>
<br>
<input type="button" value="背景3" onclick="backgroungclick3()"/>
<br>
<br>
<br>
<br>
<input id="id_input" style="width: 90%" type="text" value="null"/>
<br>
<input type="button" value="JavacallHtml" onclick="window.jsObj.JavacallHtml()"/>
<br>
<br>
<br>
<input id="id_input2" style="width: 90%" type="text" value="null"/>
<br>
<input type="button" value="JavacallHtml2" onclick="window.jsObj.JavacallHtml2()"/>
<input type="file" name="headImage[]"/>
<br>
<input type="file" name="headImage[]"/>
<br>
</body>
<script type="text/javascript" language="javascript">
function showHtmlcallJava() {
var img_f = document.getElementById("img_big");
img_f.style.display = ""
}
function showHtmlcallJava2() {
var img_f = document.getElementById("img_big");
img_f.style.display = "none"
}
function showFromHtml() {
document.getElementById("id_input").value = "Java call Html";
}
function showFromHtml2(param) {
document.getElementById("id_input2").value = "Java call Html :" + param;
}
var curfontsize = 15;
var curlineheight = 18;
function disclick() {
document.getElementById("texttest").style.fontSize = (--curfontsize) + 'px';
document.getElementById('texttest').style.lineHeight = (--curlineheight) + 'px';
}
function addclick() {
document.getElementById("texttest").style.fontSize = (++curfontsize) + 'px';
document.getElementById("texttest").style.lineHeight = (++curlineheight) + 'px';
}
function backgroungclick1() {
document.body.style.background = "deepskyblue";
}
function backgroungclick2() {
document.body.style.background = "greenyellow";
}
function backgroungclick3() {
document.body.style.background = "plum";
}
</script>
</html>