|
@@ -33,6 +33,7 @@
|
|
|
|
|
|
package com.github.aachartmodel.aainfographics.aachartcreator
|
|
package com.github.aachartmodel.aainfographics.aachartcreator
|
|
|
|
|
|
|
|
+import android.annotation.SuppressLint
|
|
import android.app.AlertDialog
|
|
import android.app.AlertDialog
|
|
import android.content.Context
|
|
import android.content.Context
|
|
import android.os.Build
|
|
import android.os.Build
|
|
@@ -50,7 +51,7 @@ class AAMoveOverEventMessageModel {
|
|
var x: Double? = null
|
|
var x: Double? = null
|
|
var y: Double? = null
|
|
var y: Double? = null
|
|
var category: String? = null
|
|
var category: String? = null
|
|
- var offset: LinkedTreeMap<*, *>? = null
|
|
|
|
|
|
+ var offset: LinkedTreeMap<String, Any>? = null
|
|
var index: Int? = null
|
|
var index: Int? = null
|
|
}
|
|
}
|
|
|
|
|
|
@@ -67,22 +68,19 @@ class AAChartView : WebView {
|
|
var contentWidth: Float? = null
|
|
var contentWidth: Float? = null
|
|
set(value) {
|
|
set(value) {
|
|
field = value
|
|
field = value
|
|
- val jsStr = ("setTheChartViewContentWidth('"
|
|
|
|
- + field + "')")
|
|
|
|
|
|
+ val jsStr = "setTheChartViewContentWidth('$field')"
|
|
safeEvaluateJavaScriptString(jsStr)
|
|
safeEvaluateJavaScriptString(jsStr)
|
|
}
|
|
}
|
|
var contentHeight: Float? = null
|
|
var contentHeight: Float? = null
|
|
set(value) {
|
|
set(value) {
|
|
field = value
|
|
field = value
|
|
- val jsStr = ("setTheChartViewContentHeight('"
|
|
|
|
- + field + "')")
|
|
|
|
|
|
+ val jsStr = "setTheChartViewContentHeight('$field')"
|
|
safeEvaluateJavaScriptString(jsStr)
|
|
safeEvaluateJavaScriptString(jsStr)
|
|
}
|
|
}
|
|
var chartSeriesHidden: Boolean? = null
|
|
var chartSeriesHidden: Boolean? = null
|
|
set(value) {
|
|
set(value) {
|
|
field = value
|
|
field = value
|
|
- val jsStr = ("setChartSeriesHidden('"
|
|
|
|
- + field + "')")
|
|
|
|
|
|
+ val jsStr = "setChartSeriesHidden('$field')"
|
|
safeEvaluateJavaScriptString(jsStr)
|
|
safeEvaluateJavaScriptString(jsStr)
|
|
}
|
|
}
|
|
var isClearBackgroundColor: Boolean? = null
|
|
var isClearBackgroundColor: Boolean? = null
|
|
@@ -90,10 +88,10 @@ class AAChartView : WebView {
|
|
field = value
|
|
field = value
|
|
if (field == true) {
|
|
if (field == true) {
|
|
setBackgroundColor(0)
|
|
setBackgroundColor(0)
|
|
- this.background?.alpha = 0
|
|
|
|
|
|
+ background?.alpha = 0
|
|
} else {
|
|
} else {
|
|
setBackgroundColor(1)
|
|
setBackgroundColor(1)
|
|
- this.background?.alpha = 255
|
|
|
|
|
|
+ background?.alpha = 255
|
|
}
|
|
}
|
|
}
|
|
}
|
|
var callBack: AAChartViewCallBack? = null
|
|
var callBack: AAChartViewCallBack? = null
|
|
@@ -122,31 +120,28 @@ class AAChartView : WebView {
|
|
setupBasicContent()
|
|
setupBasicContent()
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @SuppressLint("SetJavaScriptEnabled")
|
|
private fun setupBasicContent() { // Do some initialize work.
|
|
private fun setupBasicContent() { // Do some initialize work.
|
|
contentWidth = 420f
|
|
contentWidth = 420f
|
|
contentHeight = 580f
|
|
contentHeight = 580f
|
|
isClearBackgroundColor = false
|
|
isClearBackgroundColor = false
|
|
- this.settings.javaScriptEnabled = true
|
|
|
|
|
|
+ settings.javaScriptEnabled = true
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
|
setWebContentsDebuggingEnabled(true)
|
|
setWebContentsDebuggingEnabled(true)
|
|
}
|
|
}
|
|
//把当前对象作为androidObject别名传递给js
|
|
//把当前对象作为androidObject别名传递给js
|
|
-//js通过window.androidObject.androidMethod()就可以直接调用安卓的androidMethod方法
|
|
|
|
|
|
+ //js通过window.androidObject.androidMethod()就可以直接调用安卓的androidMethod方法
|
|
addJavascriptInterface(this, "androidObject")
|
|
addJavascriptInterface(this, "androidObject")
|
|
}
|
|
}
|
|
|
|
|
|
//js调用安卓,必须加@JavascriptInterface注释的方法才可以被js调用
|
|
//js调用安卓,必须加@JavascriptInterface注释的方法才可以被js调用
|
|
@JavascriptInterface
|
|
@JavascriptInterface
|
|
fun androidMethod(message: String?): String {
|
|
fun androidMethod(message: String?): String {
|
|
- val gson = Gson()
|
|
|
|
- var messageBody: Map<*, *> =
|
|
|
|
- HashMap<String, Any>()
|
|
|
|
- messageBody = gson.fromJson(message, messageBody.javaClass)
|
|
|
|
|
|
+ var messageBody = HashMap<String, Any>()
|
|
|
|
+ messageBody = Gson().fromJson(message, messageBody.javaClass)
|
|
val eventMessageModel: AAMoveOverEventMessageModel = getEventMessageModel(messageBody)
|
|
val eventMessageModel: AAMoveOverEventMessageModel = getEventMessageModel(messageBody)
|
|
- if (callBack != null) {
|
|
|
|
- callBack!!.chartViewMoveOverEventMessage(this, eventMessageModel)
|
|
|
|
- }
|
|
|
|
- // Log.i("androidMethod","++++++++++++++++显示总共调用了几次");
|
|
|
|
|
|
+ callBack?.chartViewMoveOverEventMessage(this, eventMessageModel)
|
|
|
|
+ //Log.i("androidMethod","++++++++++++++++显示总共调用了几次");
|
|
return ""
|
|
return ""
|
|
}
|
|
}
|
|
|
|
|
|
@@ -184,8 +179,7 @@ class AAChartView : WebView {
|
|
animation: Boolean
|
|
animation: Boolean
|
|
) {
|
|
) {
|
|
val seriesArr = Gson().toJson(seriesElementsArr)
|
|
val seriesArr = Gson().toJson(seriesElementsArr)
|
|
- val javaScriptStr = ("onlyRefreshTheChartDataWithSeries('"
|
|
|
|
- + seriesArr + "','" + animation + "')")
|
|
|
|
|
|
+ val javaScriptStr = "onlyRefreshTheChartDataWithSeries('$seriesArr','$animation')"
|
|
safeEvaluateJavaScriptString(javaScriptStr)
|
|
safeEvaluateJavaScriptString(javaScriptStr)
|
|
}
|
|
}
|
|
|
|
|
|
@@ -230,68 +224,56 @@ class AAChartView : WebView {
|
|
shift: Boolean,
|
|
shift: Boolean,
|
|
animation: Boolean
|
|
animation: Boolean
|
|
) {
|
|
) {
|
|
- val optionsStr: String
|
|
|
|
- optionsStr = if (options is Int
|
|
|
|
- || options is Float
|
|
|
|
- || options is Double
|
|
|
|
|
|
+ val optionsStr: String = if (
|
|
|
|
+ options is Int
|
|
|
|
+ || options is Float
|
|
|
|
+ || options is Double
|
|
) {
|
|
) {
|
|
options.toString()
|
|
options.toString()
|
|
} else {
|
|
} else {
|
|
Gson().toJson(options)
|
|
Gson().toJson(options)
|
|
}
|
|
}
|
|
- val javaScriptStr = ("addPointToChartSeries('"
|
|
|
|
- + elementIndex + "','"
|
|
|
|
- + optionsStr + "','"
|
|
|
|
- + redraw + "','"
|
|
|
|
- + shift + "','"
|
|
|
|
- + animation + "')")
|
|
|
|
|
|
+ val javaScriptStr = "addPointToChartSeries('$elementIndex','$optionsStr','$redraw','$shift','$animation')"
|
|
safeEvaluateJavaScriptString(javaScriptStr)
|
|
safeEvaluateJavaScriptString(javaScriptStr)
|
|
}
|
|
}
|
|
|
|
|
|
fun aa_showTheSeriesElementContent(elementIndex: Int) {
|
|
fun aa_showTheSeriesElementContent(elementIndex: Int) {
|
|
- val javaScriptStr = ("showTheSeriesElementContentWithIndex('"
|
|
|
|
- + elementIndex + "')")
|
|
|
|
|
|
+ val javaScriptStr = "showTheSeriesElementContentWithIndex('$elementIndex')"
|
|
safeEvaluateJavaScriptString(javaScriptStr)
|
|
safeEvaluateJavaScriptString(javaScriptStr)
|
|
}
|
|
}
|
|
|
|
|
|
fun aa_hideTheSeriesElementContent(elementIndex: Int) {
|
|
fun aa_hideTheSeriesElementContent(elementIndex: Int) {
|
|
- val javaScriptStr = ("hideTheSeriesElementContentWithIndex('"
|
|
|
|
- + elementIndex + "')")
|
|
|
|
|
|
+ val javaScriptStr = "hideTheSeriesElementContentWithIndex('$elementIndex')"
|
|
safeEvaluateJavaScriptString(javaScriptStr)
|
|
safeEvaluateJavaScriptString(javaScriptStr)
|
|
}
|
|
}
|
|
|
|
|
|
fun aa_addElementToChartSeries(aaSeriesElement: AASeriesElement) {
|
|
fun aa_addElementToChartSeries(aaSeriesElement: AASeriesElement) {
|
|
val pureElementJsonStr = Gson().toJson(aaSeriesElement)
|
|
val pureElementJsonStr = Gson().toJson(aaSeriesElement)
|
|
- val javaScriptStr = ("addElementToChartSeriesWithElement('"
|
|
|
|
- + pureElementJsonStr + "')")
|
|
|
|
|
|
+ val javaScriptStr = "addElementToChartSeriesWithElement('$pureElementJsonStr')"
|
|
safeEvaluateJavaScriptString(javaScriptStr)
|
|
safeEvaluateJavaScriptString(javaScriptStr)
|
|
}
|
|
}
|
|
|
|
|
|
fun aa_removeElementFromChartSeries(elementIndex: Int) {
|
|
fun aa_removeElementFromChartSeries(elementIndex: Int) {
|
|
- val javaScriptStr = ("removeElementFromChartSeriesWithElementIndex('"
|
|
|
|
- + elementIndex + "')")
|
|
|
|
|
|
+ val javaScriptStr = "removeElementFromChartSeriesWithElementIndex('$elementIndex')"
|
|
safeEvaluateJavaScriptString(javaScriptStr)
|
|
safeEvaluateJavaScriptString(javaScriptStr)
|
|
}
|
|
}
|
|
|
|
|
|
fun aa_evaluateTheJavaScriptStringFunction(jsFunctionStr: String) {
|
|
fun aa_evaluateTheJavaScriptStringFunction(jsFunctionStr: String) {
|
|
val pureJSFunctionStr: String =
|
|
val pureJSFunctionStr: String =
|
|
AAJSStringPurer.pureJavaScriptFunctionString(jsFunctionStr)
|
|
AAJSStringPurer.pureJavaScriptFunctionString(jsFunctionStr)
|
|
- val jsFunctionNameStr = ("evaluateTheJavaScriptStringFunction('"
|
|
|
|
- + pureJSFunctionStr + "')")
|
|
|
|
|
|
+ val jsFunctionNameStr = "evaluateTheJavaScriptStringFunction('$pureJSFunctionStr')"
|
|
safeEvaluateJavaScriptString(jsFunctionNameStr)
|
|
safeEvaluateJavaScriptString(jsFunctionNameStr)
|
|
}
|
|
}
|
|
|
|
|
|
private fun loadLocalFilesAndDrawChart(aaOptions: AAOptions) {
|
|
private fun loadLocalFilesAndDrawChart(aaOptions: AAOptions) {
|
|
- this.loadUrl("file:///android_asset/AAChartView.html")
|
|
|
|
- this.webViewClient = object : WebViewClient() {
|
|
|
|
|
|
+ loadUrl("file:///android_asset/AAChartView.html")
|
|
|
|
+ webViewClient = object : WebViewClient() {
|
|
override fun onPageFinished(
|
|
override fun onPageFinished(
|
|
view: WebView,
|
|
view: WebView,
|
|
url: String
|
|
url: String
|
|
- ) { // Log.i("js files load","图表加载完成!!!!!!!! ");
|
|
|
|
|
|
+ ) { //Log.i("js files load","图表加载完成!!!!!!!! ");
|
|
configureChartOptionsAndDrawChart(aaOptions)
|
|
configureChartOptionsAndDrawChart(aaOptions)
|
|
- if (callBack != null) {
|
|
|
|
- callBack!!.chartViewDidFinishLoad(this@AAChartView)
|
|
|
|
- }
|
|
|
|
|
|
+ callBack?.chartViewDidFinishLoad(this@AAChartView)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -300,18 +282,14 @@ class AAChartView : WebView {
|
|
if (isClearBackgroundColor!!) {
|
|
if (isClearBackgroundColor!!) {
|
|
chartOptions.chart!!.backgroundColor("rgba(0,0,0,0)")
|
|
chartOptions.chart!!.backgroundColor("rgba(0,0,0,0)")
|
|
}
|
|
}
|
|
- val gson = Gson()
|
|
|
|
- val aaOptionsJsonStr = gson.toJson(chartOptions)
|
|
|
|
|
|
+ val aaOptionsJsonStr = Gson().toJson(chartOptions)
|
|
optionsJson = aaOptionsJsonStr
|
|
optionsJson = aaOptionsJsonStr
|
|
- val javaScriptStr = ("loadTheHighChartView('"
|
|
|
|
- + aaOptionsJsonStr + "','"
|
|
|
|
- + contentWidth + "','"
|
|
|
|
- + contentHeight + "')")
|
|
|
|
|
|
+ val javaScriptStr = "loadTheHighChartView('$aaOptionsJsonStr','$contentWidth','$contentHeight')"
|
|
safeEvaluateJavaScriptString(javaScriptStr)
|
|
safeEvaluateJavaScriptString(javaScriptStr)
|
|
}
|
|
}
|
|
|
|
|
|
private fun showJavaScriptAlertView() {
|
|
private fun showJavaScriptAlertView() {
|
|
- this.webChromeClient = object : WebChromeClient() {
|
|
|
|
|
|
+ webChromeClient = object : WebChromeClient() {
|
|
override fun onJsAlert(
|
|
override fun onJsAlert(
|
|
view: WebView,
|
|
view: WebView,
|
|
url: String,
|
|
url: String,
|
|
@@ -324,7 +302,7 @@ class AAChartView : WebView {
|
|
val resultStr = "result --->$result"
|
|
val resultStr = "result --->$result"
|
|
val alertMessageStr = urlStr + messageStr + resultStr
|
|
val alertMessageStr = urlStr + messageStr + resultStr
|
|
AlertDialog.Builder(context)
|
|
AlertDialog.Builder(context)
|
|
- .setTitle("JavaScript alert Information") //设置对话框标题
|
|
|
|
|
|
+ .setTitle("JavaScript alert Information")
|
|
.setMessage(alertMessageStr)
|
|
.setMessage(alertMessageStr)
|
|
.setNeutralButton("sure", null)
|
|
.setNeutralButton("sure", null)
|
|
.show()
|
|
.show()
|
|
@@ -333,13 +311,13 @@ class AAChartView : WebView {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- private fun getEventMessageModel(messageBody: Map<*, *>): AAMoveOverEventMessageModel {
|
|
|
|
|
|
+ private fun getEventMessageModel(messageBody: Map<String, Any>): AAMoveOverEventMessageModel {
|
|
val eventMessageModel = AAMoveOverEventMessageModel()
|
|
val eventMessageModel = AAMoveOverEventMessageModel()
|
|
eventMessageModel.name = messageBody["name"].toString()
|
|
eventMessageModel.name = messageBody["name"].toString()
|
|
eventMessageModel.x = messageBody["x"] as Double?
|
|
eventMessageModel.x = messageBody["x"] as Double?
|
|
eventMessageModel.y = messageBody["y"] as Double?
|
|
eventMessageModel.y = messageBody["y"] as Double?
|
|
eventMessageModel.category = messageBody["category"].toString()
|
|
eventMessageModel.category = messageBody["category"].toString()
|
|
- eventMessageModel.offset = messageBody["offset"] as LinkedTreeMap<*, *>?
|
|
|
|
|
|
+ eventMessageModel.offset = messageBody["offset"] as LinkedTreeMap<String, Any>?
|
|
val index = messageBody["index"] as Double?
|
|
val index = messageBody["index"] as Double?
|
|
eventMessageModel.index = index?.toInt()
|
|
eventMessageModel.index = index?.toInt()
|
|
return eventMessageModel
|
|
return eventMessageModel
|
|
@@ -347,11 +325,11 @@ class AAChartView : WebView {
|
|
|
|
|
|
private fun safeEvaluateJavaScriptString(javaScriptString: String) {
|
|
private fun safeEvaluateJavaScriptString(javaScriptString: String) {
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
|
- evaluateJavascript("javascript:$javaScriptString") {
|
|
|
|
- // Log.i("call back information","输出打印查看回调的结果"+ it);
|
|
|
|
|
|
+ evaluateJavascript("javascript:$javaScriptString") {
|
|
|
|
+ //Log.i("call back information","输出打印查看回调的结果"+ it);
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
- this.loadUrl("javascript:$javaScriptString")
|
|
|
|
|
|
+ loadUrl("javascript:$javaScriptString")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|