An An преди 5 години
родител
ревизия
0f90682efa

+ 8 - 2
app/src/main/assets/AAChartView.js

@@ -2,13 +2,19 @@
         var aaGlobalChart;
 
         function loadTheHighChartView (sender,receivedWidth, receivedHeight) {
+            var aaOptions = JSON.parse(sender);
+            if (aaOptions.xAxisArray) {
+                    aaOptions.xAxis = aaOptions.xAxisArray
+                }
 
-        var aaOptions = JSON.parse(sender);;
+            if (aaOptions.yAxisArray) {
+                    aaOptions.yAxis = aaOptions.yAxisArray
+                }
 
             aaOptions.credits = {enabled:false};//去掉表格右下角版权信息
             if (aaOptions.plotOptions) {
                     configurePlotOptions(aaOptions);
-                            }
+                }
             if (aaOptions.tooltip) {
                     if (aaOptions.tooltip.formatter) {
                         aaOptions.tooltip.formatter = eval(aaOptions.tooltip.formatter);

+ 19 - 19
app/src/main/java/com/aachartmodel/aainfographics/AAInfographicsLib/AAChartConfiger/AAChartModel.kt

@@ -152,23 +152,23 @@ enum class AAChartFontWeightType(val value: String) {
 
 class AAChartModel {
 
-    var animationType: String? = null          //动画类型
+    var animationType: AAChartAnimationType? = null          //动画类型
     var animationDuration: Int? = null         //动画时间
     var title: String? = null                  //标题内容
     var titleFontColor: String? = null         //标题字体颜色
     var titleFontSize: Float? = null           //标题字体大小
     var titleFontWeight: String? = null        //标题字体粗细
     var subtitle: String? = null               //副标题内容
-    var subtitleAlign: String? = null
+    var subtitleAlign: AAChartAlignType? = null
     var subtitleFontColor: String? = null      //副标题字体颜色
     var subtitleFontSize: Float? = null        //副标题字体大小
     var subtitleFontWeight: String? = null     //副标题字体粗细
     var axesTextColor: String? = null          //x 轴和 y 轴文字颜色
-    var chartType: String? = null              //图表类型
-    var stacking: String? = null               //堆积样式
-    var markerSymbol: String? = null           //折线曲线连接点的类型:"circle", "square", "diamond", "triangle","triangle-down",默认是"circle"
-    var markerSymbolStyle: String? = null
-    var zoomType: String? = null               //缩放类型 AAChartZoomTypeX表示可沿着 x 轴进行手势缩放
+    var chartType: AAChartType? = null              //图表类型
+    var stacking: AAChartStackingType? = null               //堆积样式
+    var markerSymbol: AAChartSymbolType? = null           //折线曲线连接点的类型:"circle", "square", "diamond", "triangle","triangle-down",默认是"circle"
+    var markerSymbolStyle: AAChartSymbolStyleType? = null
+    var zoomType: AAChartZoomType? = null               //缩放类型 AAChartZoomTypeX表示可沿着 x 轴进行手势缩放
     var pointHollow: Boolean? = null           //折线或者曲线的连接点是否为空心的
     var inverted: Boolean? = null              //x 轴是否翻转(垂直)
     var xAxisReversed: Boolean? = null         //x 轴翻转
@@ -207,7 +207,7 @@ class AAChartModel {
 
 
     fun animationType(prop: AAChartAnimationType): AAChartModel {
-        animationType = prop.value
+        animationType = prop
         return this
     }
 
@@ -241,7 +241,7 @@ class AAChartModel {
         return this
     }
 
-    fun subtitleAlign(prop: String): AAChartModel {
+    fun subtitleAlign(prop: AAChartAlignType): AAChartModel {
         subtitleAlign = prop
         return this
     }
@@ -267,26 +267,26 @@ class AAChartModel {
     }
 
     fun chartType(prop: AAChartType): AAChartModel {
-        chartType = prop.value
+        chartType = prop
         return this
     }
 
     fun stacking(prop: AAChartStackingType): AAChartModel {
-        stacking = prop.value
+        stacking = prop
         return this
     }
 
     fun markerSymbol(prop: AAChartSymbolType): AAChartModel {
-        markerSymbol = prop.value
+        markerSymbol = prop
         return this
     }
 
     fun markerSymbolStyle(prop: AAChartSymbolStyleType): AAChartModel {
-        markerSymbolStyle = prop.value
+        markerSymbolStyle = prop
         return this
     }
 
-    fun zoomType(prop: String): AAChartModel {
+    fun zoomType(prop: AAChartZoomType): AAChartModel {
         zoomType = prop
         return this
     }
@@ -463,17 +463,17 @@ class AAChartModel {
     }
 
      init {
-         chartType            = AAChartType.Line.value
+         chartType            = AAChartType.Line
          animationDuration    = 500 //以毫秒为单位
-         animationType        = AAChartAnimationType.Linear.value
+         animationType        = AAChartAnimationType.Linear
          pointHollow          = false
          inverted             = false
-         stacking             = AAChartStackingType.False.value
+         stacking             = AAChartStackingType.False
          xAxisReversed        = false
          yAxisReversed        = false
-         zoomType             = "x"
+         zoomType             = AAChartZoomType.X
          dataLabelsEnabled    = false
-         markerSymbolStyle    = AAChartSymbolStyleType.Normal.value
+         markerSymbolStyle    = AAChartSymbolStyleType.Normal
          colorsTheme          = arrayOf("#fe117c", "#ffc069", "#06caf4", "#7dffc0")
          tooltipCrosshairs    = true
          gradientColorEnable  = false

+ 24 - 21
app/src/main/java/com/aachartmodel/aainfographics/AAInfographicsLib/AAChartConfiger/AAOptionsConstructor.kt

@@ -79,7 +79,7 @@ object AAOptionsConstructor {
                 .stacking(aaChartModel.stacking) //设置是否百分比堆叠显示图形
             )
 
-        if (aaChartModel.animationType != AAChartAnimationType.Linear.value) {
+        if (aaChartModel.animationType != AAChartAnimationType.Linear) {
             aaPlotOptions
                 .series?.animation(AAAnimation()
                 .easing(aaChartModel.animationType)
@@ -119,19 +119,19 @@ object AAOptionsConstructor {
     ) {
         val chartType = aaChartModel.chartType
         //数据点标记相关配置,只有线性图(折线图、曲线图、折线区域填充图、曲线区域填充图,散点图)才有数据点标记
-        if (chartType == AAChartType.Area.value
-            || chartType == AAChartType.Areaspline.value
-            || chartType == AAChartType.Line.value
-            || chartType == AAChartType.Spline.value
-            || chartType == AAChartType.Scatter.value) {
+        if (chartType == AAChartType.Area
+            || chartType == AAChartType.Areaspline
+            || chartType == AAChartType.Line
+            || chartType == AAChartType.Spline
+            || chartType == AAChartType.Scatter) {
             val aaMarker = AAMarker()
                 .radius(aaChartModel.markerRadius) //曲线连接点半径,默认是4
-                .symbol(aaChartModel.markerSymbol) //曲线点类型:"circle", "square", "diamond", "triangle","triangle-down",默认是"circle"
-            if (aaChartModel.markerSymbolStyle == AAChartSymbolStyleType.InnerBlank.value) {
+                .symbol(aaChartModel.markerSymbol?.value) //曲线点类型:"circle", "square", "diamond", "triangle","triangle-down",默认是"circle"
+            if (aaChartModel.markerSymbolStyle == AAChartSymbolStyleType.InnerBlank) {
                 aaMarker.fillColor("#ffffff") //点的填充色(用来设置折线连接点的填充色)
                     .lineWidth(2f) //外沿线的宽度(用来设置折线连接点的轮廓描边的宽度)
                     .lineColor("") //外沿线的颜色(用来设置折线连接点的轮廓描边颜色,当值为空字符串时,默认取数据点或数据列的颜色)
-            } else if (aaChartModel.markerSymbolStyle == AAChartSymbolStyleType.BorderBlank.value) {
+            } else if (aaChartModel.markerSymbolStyle == AAChartSymbolStyleType.BorderBlank) {
                 aaMarker.lineWidth(2f)
                     .lineColor(aaChartModel.backgroundColor)
             }
@@ -159,7 +159,7 @@ object AAOptionsConstructor {
         }
 
         when (chartType) {
-            AAChartType.Column.value -> {
+            AAChartType.Column -> {
                 val aaColumn = AAColumn()
                     .borderWidth(0f)
                     .borderRadius(aaChartModel.borderRadius)
@@ -170,7 +170,7 @@ object AAOptionsConstructor {
                 }
                 aaPlotOptions.column(aaColumn)
             }
-            AAChartType.Bar.value -> {
+            AAChartType.Bar -> {
                 val aaBar = AABar()
                     .borderWidth(0f)
                     .borderRadius(aaChartModel.borderRadius)
@@ -181,11 +181,11 @@ object AAOptionsConstructor {
                 }
                 aaPlotOptions.bar(aaBar)
             }
-            AAChartType.Area.value -> aaPlotOptions.area(AAArea().dataLabels(aaDataLabels))
-            AAChartType.Areaspline.value -> aaPlotOptions.areaspline(AAAreaspline().dataLabels(aaDataLabels))
-            AAChartType.Line.value -> aaPlotOptions.line(AALine().dataLabels(aaDataLabels))
-            AAChartType.Spline.value -> aaPlotOptions.spline(AASpline().dataLabels(aaDataLabels))
-            AAChartType.Pie.value -> {
+            AAChartType.Area -> aaPlotOptions.area(AAArea().dataLabels(aaDataLabels))
+            AAChartType.Areaspline -> aaPlotOptions.areaspline(AAAreaspline().dataLabels(aaDataLabels))
+            AAChartType.Line -> aaPlotOptions.line(AALine().dataLabels(aaDataLabels))
+            AAChartType.Spline -> aaPlotOptions.spline(AASpline().dataLabels(aaDataLabels))
+            AAChartType.Pie -> {
                 val aaPie = AAPie()
                     .allowPointSelect(true)
                     .cursor("pointer")
@@ -195,18 +195,21 @@ object AAOptionsConstructor {
                 }
                 aaPlotOptions.pie(aaPie.dataLabels(aaDataLabels))
             }
-            AAChartType.Columnrange.value -> {
+            AAChartType.Columnrange -> {
                 val aaColumnrange = AAColumnrange()
                     .borderRadius(0f) //The color of the border surrounding each column or bar
                     .borderWidth(0f) //The corner radius of the border surrounding each column or bar. default:0
                     .dataLabels(aaDataLabels)
                 aaPlotOptions.columnrange(aaColumnrange)
             }
-            AAChartType.Arearange.value -> {
+            AAChartType.Arearange -> {
                 val aaArearange = AAArearange()
                     .dataLabels(aaDataLabels)
                 aaPlotOptions.arearange(aaArearange)
             }
+            else -> {
+
+            }
         }
     }
 
@@ -217,9 +220,9 @@ object AAOptionsConstructor {
     ) {
         val chartType = aaChartModel.chartType
         //x 轴和 Y 轴的相关配置,扇形图、金字塔图和漏斗图则不需要设置 X 轴和 Y 轴的相关内容
-        if (   chartType != AAChartType.Pie.value
-            && chartType != AAChartType.Pyramid.value
-            && chartType != AAChartType.Funnel.value) {
+        if (   chartType != AAChartType.Pie
+            && chartType != AAChartType.Pyramid
+            && chartType != AAChartType.Funnel) {
             val aaXAxisLabelsEnabled = aaChartModel.xAxisLabelsEnabled
             val aaXAxisLabels = AALabels()
                 .enabled(aaXAxisLabelsEnabled) //设置 x 轴是否显示文字

+ 4 - 2
app/src/main/java/com/aachartmodel/aainfographics/AAInfographicsLib/AAOptionsModel/AAAnimation.kt

@@ -8,6 +8,8 @@
  */
 package com.aachartmodel.aainfographics.AAInfographicsLib.AAOptionsModel
 
+import com.example.chartcorekotlin.AAChartConfiger.AAChartAnimationType
+
 class AAAnimation {
     private var duration: Int? = null
     private var easing: String? = null
@@ -17,8 +19,8 @@ class AAAnimation {
         return this
     }
 
-    fun easing(prop: String?): AAAnimation {
-        easing = prop
+    fun easing(prop: AAChartAnimationType?): AAAnimation {
+        easing = prop?.value
         return this
     }
 }

+ 7 - 4
app/src/main/java/com/aachartmodel/aainfographics/AAInfographicsLib/AAOptionsModel/AAChart.kt

@@ -8,6 +8,9 @@
  */
 package com.aachartmodel.aainfographics.AAInfographicsLib.AAOptionsModel
 
+import com.example.chartcorekotlin.AAChartConfiger.AAChartType
+import com.example.chartcorekotlin.AAChartConfiger.AAChartZoomType
+
 class AAChart {
     private var type: String? = null
     private var backgroundColor: Any? = null
@@ -21,8 +24,8 @@ class AAChart {
     private var marginLeft: Float? = null
     private var marginRight: Float? = null
 
-    fun type(prop: String?): AAChart {
-        type = prop
+    fun type(prop: AAChartType?): AAChart {
+        type = prop?.value
         return this
     }
 
@@ -36,8 +39,8 @@ class AAChart {
         return this
     }
 
-    fun pinchType(prop: String?): AAChart {
-        pinchType = prop
+    fun pinchType(prop: AAChartZoomType?): AAChart {
+        pinchType = prop?.value
         return this
     }
 

+ 15 - 15
app/src/main/java/com/aachartmodel/aainfographics/AAInfographicsLib/AAOptionsModel/AALabels.kt

@@ -10,25 +10,25 @@ package com.aachartmodel.aainfographics.AAInfographicsLib.AAOptionsModel
 
 
 class AALabels {
-    private var align: String? =
+     var align: String? =
         null//轴标签的对齐方式,可用的值有 "left"、"center" 及 "right"。默认值是根据坐标轴的位置(在图表中的位置)即标签的旋转角度进行智能判断的。 默认是:center.
-    private var autoRotation: Any? =
+     var autoRotation: Any? =
         null //只针对水平轴有效,允许在防止轴标签重叠时自动旋转轴标签的角度。当空间足够时,轴标签不会被旋转。当图表变小时(主要是宽度变小) ,轴标签开始旋转对应的角度,然后会依次删除间隔的轴标签并尝试旋转数组中的角度。可以通过将此参数设置为 false 来关闭轴标签旋转(这将导致标签自动换行)。 默认是:[-45].
-    private var autoRotationLimit: Float? =
+     var autoRotationLimit: Float? =
         null//当每个分类的宽度比该参数的值大很多(像素)时,轴标签将不会被自动旋转,而是以换行的形式展示轴标签。 当轴标签包含多个短词时换行展示轴标签可以使得轴标签有足够的空间,所以设置合理的自动旋转下限是非常有意义的。 默认是:80.
-    private var distance: Float? = null//只针对极地图有效,定义周标签与绘图区边缘的距离。 默认是:15.
-    private var enabled: Boolean? = null//是否显示坐标轴标签 默认是:true.
-    private var format: String? = null//坐标轴格式化字符串。 默认是:{value}.
-    private var formatter: String? = null//坐标轴格式化字符串。 默认是:{value}.
-    private var padding: Float? = null//轴标签的内间距,作用是保证轴标签之间有空隙。 默认是:5.
-    private var rotation: Float? = null//轴标签的旋转角度 默认是:0.
-    private var staggerLines: Int? = null//只针对水平轴有效,定义轴标签显示行数。
-    private var step: Int? =
+     var distance: Float? = null//只针对极地图有效,定义周标签与绘图区边缘的距离。 默认是:15.
+     var enabled: Boolean? = null//是否显示坐标轴标签 默认是:true.
+     var format: String? = null//坐标轴格式化字符串。 默认是:{value}.
+     var formatter: String? = null//坐标轴格式化字符串。 默认是:{value}.
+     var padding: Float? = null//轴标签的内间距,作用是保证轴标签之间有空隙。 默认是:5.
+     var rotation: Float? = null//轴标签的旋转角度 默认是:0.
+     var staggerLines: Int? = null//只针对水平轴有效,定义轴标签显示行数。
+     var step: Int? =
         null//显示 n 的倍数标签,例如设置为 2 则表示标签间隔一个轴标签显示。默认情况下,为了避免轴标签被覆盖,该参数会根据情况自动计算。可以通过设置此参数为 1 来阻止自动计算。
-    private var style: AAStyle? = null//轴标签的 CSS 样式
-    private var x: Float? = null//相对于坐标轴刻度线的水平偏移。 默认是:0.
-    private var y: Float? = null//相对于坐标轴刻度线的垂直平偏移。 默认是:null.
-    private var useHTML: Boolean? = null//HTML渲染
+     var style: AAStyle? = null//轴标签的 CSS 样式
+     var x: Float? = null//相对于坐标轴刻度线的水平偏移。 默认是:0.
+     var y: Float? = null//相对于坐标轴刻度线的垂直平偏移。 默认是:null.
+     var useHTML: Boolean? = null//HTML渲染
 
     fun align(prop: String): AALabels {
         align = prop

+ 12 - 0
app/src/main/java/com/aachartmodel/aainfographics/AAInfographicsLib/AAOptionsModel/AAOptions.kt

@@ -16,6 +16,8 @@ class AAOptions {
     var subtitle: AASubtitle? = null
     var xAxis: AAXAxis? = null
     var yAxis: AAYAxis? = null
+    var xAxisArray: Array<AAXAxis>? = null
+    var yAxisArray: Array<AAYAxis>? = null
     var tooltip: AATooltip? = null
     var plotOptions: AAPlotOptions? = null
     var series: Array<AASeriesElement>? = null
@@ -48,6 +50,16 @@ class AAOptions {
         return this
     }
 
+    fun xAxisArray(prop: Array<AAXAxis>): AAOptions {
+        xAxisArray = prop
+        return this
+    }
+
+    fun yAxisArray(prop: Array<AAYAxis>): AAOptions {
+        yAxisArray = prop
+        return this
+    }
+
     fun tooltip(prop: AATooltip): AAOptions {
         tooltip = prop
         return this

+ 4 - 2
app/src/main/java/com/aachartmodel/aainfographics/AAInfographicsLib/AAOptionsModel/AASeries.kt

@@ -8,6 +8,8 @@
  */
 package com.aachartmodel.aainfographics.AAInfographicsLib.AAOptionsModel
 
+import com.example.chartcorekotlin.AAChartConfiger.AAChartStackingType
+
 class AASeries {
     private var borderRadius: Float? = null
     private var marker: AAMarker? = null
@@ -29,8 +31,8 @@ class AASeries {
         return this
     }
 
-    fun stacking(prop: String?): AASeries {
-        stacking = prop
+    fun stacking(prop: AAChartStackingType?): AASeries {
+        stacking = prop?.value
         return this
     }
 

+ 3 - 2
app/src/main/java/com/aachartmodel/aainfographics/AAInfographicsLib/AAOptionsModel/AASubtitle.kt

@@ -8,6 +8,7 @@
  */
 package com.aachartmodel.aainfographics.AAInfographicsLib.AAOptionsModel
 
+import com.example.chartcorekotlin.AAChartConfiger.AAChartAlignType
 import com.example.chartcorekotlin.AAChartConfiger.AAChartVerticalAlignType
 
 class AASubtitle {
@@ -29,8 +30,8 @@ class AASubtitle {
         return this
     }
 
-    fun align(prop: String?): AASubtitle {
-        align = prop
+    fun align(prop: AAChartAlignType?): AASubtitle {
+        align = prop?.value
         return this
     }
 

+ 13 - 0
app/src/main/java/com/aachartmodel/aainfographics/AAInfographicsLib/AAOptionsModel/AAXAxis.kt

@@ -12,7 +12,9 @@ class AAXAxis {
     var plotBands: Array<AAPlotBandsElement>? = null
     var plotLines: Array<AAPlotLinesElement>? = null
     var categories: Array<String>? = null
+    var linkedTo: Int? = null
     var reversed: Boolean? = null
+    var opposite: Boolean? = null
     var lineWidth: Float? = null //x轴轴线宽度
     var lineColor: String? = null //x轴轴线线颜色
     var max: Float? = null //x轴最大值
@@ -49,11 +51,22 @@ class AAXAxis {
         return this
     }
 
+    fun linkedTo(prop: Int?): AAXAxis {
+        linkedTo = prop
+        return this
+    }
+
     fun reversed(prop: Boolean?): AAXAxis {
         reversed = prop
         return this
     }
 
+    fun opposite(prop: Boolean?): AAXAxis {
+        opposite = prop
+        return this
+    }
+
+
     fun lineWidth(prop: Float?): AAXAxis {
         lineWidth = prop
         return this

+ 29 - 29
app/src/main/java/com/aachartmodel/aainfographics/AAInfographicsLib/AAOptionsModel/AAYAxis.kt

@@ -9,35 +9,35 @@
 package com.aachartmodel.aainfographics.AAInfographicsLib.AAOptionsModel
 
 class AAYAxis {
-    private var title: AATitle? = null
-    private var plotBands: Array<AAPlotBandsElement>? = null
-    private var plotLines: Array<AAPlotLinesElement>? = null
-    private var categories: Array<String>? = null
-    private var reversed: Boolean? = null
-    private var gridLineWidth: Float? = null// y 轴网格线宽度
-    private var gridLineColor: String? = null  // y 轴网格线颜色
-    private var gridLineDashStyle: String? = null //网格线线条样式,所有可用的线条样式参考:Highcharts线条样式
-    private var alternateGridColor: String? = null  //backcolor of every other grid line area
-    private var gridLineInterpolation: String? =
+     var title: AATitle? = null
+     var plotBands: Array<AAPlotBandsElement>? = null
+     var plotLines: Array<AAPlotLinesElement>? = null
+     var categories: Array<String>? = null
+     var reversed: Boolean? = null
+     var gridLineWidth: Float? = null// y 轴网格线宽度
+     var gridLineColor: String? = null  // y 轴网格线颜色
+     var gridLineDashStyle: String? = null //网格线线条样式,所有可用的线条样式参考:Highcharts线条样式
+     var alternateGridColor: String? = null  //backcolor of every other grid line area
+     var gridLineInterpolation: String? =
         null //Polar charts only. Whether the grid lines should draw as a polygon with straight lines between categories, or as circles. Can be either circle or polygon. 默认是:null.
-    private var labels: AALabels? = null//用于设置 y 轴文字相关的
-    private var lineWidth: Float? = null // y 轴线宽度
-    private var lineColor: String? = null // y 轴线颜色
-    private var off: Float? = null // y 轴线水平偏移
-    private var allowDecimals: Boolean? = null //y轴是否允许显示小数
-    private var max: Float? = null //y轴最大值
-    private var min: Float? = null //y轴最小值(设置为0就不会有负数)
-    //private var minPadding:   //Padding of the min value relative to the length of the axis. A padding of 0.05 will make a 100px axis 5px longer. This is useful when you don't want the lowest data value to appear on the edge of the plot area. 默认是:0.05.
-    private var tickPositions: Array<Any>? = null //自定义Y轴坐标(如:[0, 25, 50, 75 , 100])
-    private var visible: Boolean? = null //y轴是否允许显示
-    private var opposite: Boolean? =
+     var labels: AALabels? = null//用于设置 y 轴文字相关的
+     var lineWidth: Float? = null // y 轴线宽度
+     var lineColor: String? = null // y 轴线颜色
+     var off: Float? = null // y 轴线水平偏移
+     var allowDecimals: Boolean? = null //y轴是否允许显示小数
+     var max: Float? = null //y轴最大值
+     var min: Float? = null //y轴最小值(设置为0就不会有负数)
+    // var minPadding:   //Padding of the min value relative to the length of the axis. A padding of 0.05 will make a 100px axis 5px longer. This is useful when you don't want the lowest data value to appear on the edge of the plot area. 默认是:0.05.
+     var tickPositions: Array<Any>? = null //自定义Y轴坐标(如:[0, 25, 50, 75 , 100])
+     var visible: Boolean? = null //y轴是否允许显示
+     var opposite: Boolean? =
         null//是否将坐标轴显示在对立面,默认情况下 x 轴是在图表的下方显示,y 轴是在左方,坐标轴显示在对立面后,x 轴是在上方显示,y 轴是在右方显示(即坐标轴会显示在对立面)。该配置一般是用于多坐标轴区分展示,另外在 Highstock 中,y 轴默认是在对立面显示的。 默认是:false.
-    private var tickInterval: Int? = null
-    private var crosshair: AACrosshair? = null  //准星线样式设置
-    private var stackLabels: String? = null
-    private var tickWidth: Float? = null//坐标轴刻度线的宽度,设置为 0 时则不显示刻度线
-    private var tickLength: Float? = null//坐标轴刻度线的长度。 默认是:10.
-    private var tickPosition: String? =
+     var tickInterval: Int? = null
+     var crosshair: AACrosshair? = null  //准星线样式设置
+     var stackLabels: String? = null
+     var tickWidth: Float? = null//坐标轴刻度线的宽度,设置为 0 时则不显示刻度线
+     var tickLength: Float? = null//坐标轴刻度线的长度。 默认是:10.
+     var tickPosition: String? =
         null //刻度线相对于轴线的位置,可用的值有 inside 和 outside,分别表示在轴线的内部和外部。 默认是:outside.
 
 
@@ -117,12 +117,12 @@ class AAYAxis {
     }
 
     fun max(prop: Float?): AAYAxis {
-        max = max
+        max = prop
         return this
     }
 
     fun min(prop: Float?): AAYAxis {
-        min = min
+        min = prop
         return this
     }
 

+ 133 - 1
app/src/main/java/com/aachartmodel/aainfographics/ChartsDemo/ChartComposer/ChartOptionsComposer.kt

@@ -41,7 +41,48 @@ import com.example.chartcorekotlin.AAChartConfiger.*
 class ChartOptionsComposer {
     companion object {
 
-     fun configureAAPlotBandsForChart(): AAOptions {
+        private fun customChartLegendStyle(): AAOptions {
+            val element1 = AASeriesElement()
+                .name("Predefined symbol")
+                .data(arrayOf(0.45, 0.43, 0.50, 0.55, 0.58, 0.62, 0.83, 0.39, 0.56, 0.67, 0.50, 0.34, 0.50, 0.67, 0.58, 0.29, 0.46, 0.23, 0.47, 0.46, 0.38, 0.56, 0.48, 0.36))
+            val element2 = AASeriesElement()
+                .name("Image symbol")
+                .data(arrayOf(0.38, 0.31, 0.32, 0.32, 0.64, 0.66, 0.86, 0.47, 0.52, 0.75, 0.52, 0.56, 0.54, 0.60, 0.46, 0.63, 0.54, 0.51, 0.58, 0.64, 0.60, 0.45, 0.36, 0.67))
+            val element3 = AASeriesElement()
+                .name("Base64 symbol (*)")
+                .data(arrayOf(0.46, 0.32, 0.53, 0.58, 0.86, 0.68, 0.85, 0.73, 0.69, 0.71, 0.91, 0.74, 0.60, 0.50, 0.39, 0.67, 0.55, 0.49, 0.65, 0.45, 0.64, 0.47, 0.63, 0.64))
+            val element4 = AASeriesElement()
+                .name("Custom symbol")
+                .data(arrayOf(0.60, 0.51, 0.52, 0.53, 0.64, 0.84, 0.65, 0.68, 0.63, 0.47, 0.72, 0.60, 0.65, 0.74, 0.66, 0.65, 0.71, 0.59, 0.65, 0.77, 0.52, 0.53, 0.58, 0.53))
+
+            val aaChartModel = AAChartModel()
+                .chartType(AAChartType.Areaspline)
+                .title("CUSTOM LEGEND STYLE")
+                .subtitle("LEGEND ON THE TOP_RIGHT SIDE WITH VERTICAL STYLE")
+                .subtitleAlign(AAChartAlignType.Left)
+                .markerRadius(0f)
+                .backgroundColor(AAColor.whiteColor())
+                .dataLabelsEnabled(false)
+                .yAxisGridLineWidth(0f)
+                .yAxisTitle("percent values")
+                .stacking(AAChartStackingType.Normal)
+                .colorsTheme(arrayOf("mediumspringgreen", "deepskyblue", "red", "sandybrown"))
+                .series(arrayOf(element1, element2, element3, element4))
+
+            val aaOptions = AAOptionsConstructor.configureChartOptions(aaChartModel)
+
+            aaOptions.legend!!
+                .enabled(true)
+                .align(AAChartAlignType.Right)
+                .layout(AAChartLayoutType.Vertical)
+                .verticalAlign(AAChartVerticalAlignType.Top)
+
+            aaOptions.yAxis?.labels?.format = "{value} %"//给y轴添加单位
+            return aaOptions
+        }
+
+
+        fun configureAAPlotBandsForChart(): AAOptions {
         val aaChartModel = AAChartModel()
             .chartType(AAChartType.Spline)//图形类型
             .dataLabelsEnabled(false)
@@ -276,5 +317,96 @@ function () {
         return aaOptions
     }
 
+        private fun customDoubleXAxesChart():AAOptions {
+            val gradientColorDic1 = AAGradientColor.linearGradient(
+                AALinearGradientDirection.ToTop,
+                "#7052f4",
+                "#00b0ff"//颜色字符串设置支持十六进制类型和 rgba 类型
+            )
+
+            val gradientColorDic2 = AAGradientColor.linearGradient(
+                AALinearGradientDirection.ToTop,
+                "#EF71FF",
+                "#4740C8"//颜色字符串设置支持十六进制类型和 rgba 类型
+            )
+
+            val aaChart = AAChart()
+                .type(AAChartType.Bar)
+
+            val aaTitle = AATitle()
+                .text("2015 年德国人口金字塔")
+                .style(AAStyle()
+                    .color("#000000")
+                    .fontSize(12.0f))
+
+            val aaCategories = arrayOf("0-4", "5-9", "10-14", "15-19", "20-24", "25-29", "30-34", "35-39", "40-44", "45-49", "50-54", "55-59", "60-64", "65-69", "70-74", "75-79", "80-84", "85-89", "90-94", "95-99", "100 + ")
+
+            val aaXAxis1 = AAXAxis()
+                .reversed(true)
+                .categories(aaCategories)
+                .labels(AALabels()
+                    .step(1))
+
+            val aaXAxis2 = AAXAxis()
+                .reversed(true)
+                .opposite(true)
+                .categories(aaCategories)
+                .linkedTo(0)
+                .labels(AALabels()
+                    .step(1))
+
+            val aaYAxis = AAYAxis()
+                .gridLineWidth(0f)// Y 轴网格线宽度
+                .title(AATitle()
+                    .text(""))//Y 轴标题
+                .labels(AALabels()
+                    .formatter(
+                        "function () {\n" +
+                                "    return (Math.abs(this.value) / 1000000) + 'M';\n" +
+                                "}"
+                    ))
+                .min(-4000000f)
+                .max(4000000f)
+
+            val aaPlotOptions = AAPlotOptions()
+                .series(AASeries()
+                    .animation(AAAnimation()
+                        .duration(800)
+                        .easing(AAChartAnimationType.Bounce)
+                    )
+                    .stacking(AAChartStackingType.Normal))
+
+            val aaTooltip = AATooltip()
+                .enabled(true)
+                .shared(false)
+                .formatter(("function () {\n" +
+                        "    return '<b>' + this.series.name + ', age ' + this.point.category + '</b><br/>' +\n" +
+                        "        '人口: ' + Highcharts.numberFormat(Math.abs(this.point.y), 0);\n" +
+                        "}"))
+
+            val aaSeriesElement1 = AASeriesElement()
+                .name("Men")
+                .color(gradientColorDic1)
+                .data(arrayOf(-1746181, -1884428, -2089758, -2222362, -2537431, -2507081, -2443179,
+                    -2664537, -3556505, -3680231, -3143062, -2721122, -2229181, -2227768, -2176300,
+                    -1329968, -836804, -354784, -90569, -28367, -3878))
+
+            val aaSeriesElement2 = AASeriesElement()
+                .name("Women")
+                .color(gradientColorDic2)
+                .data(arrayOf(1656154, 1787564, 1981671, 2108575, 2403438, 2366003, 2301402, 2519874,
+                    3360596, 3493473, 3050775, 2759560, 2304444, 2426504, 2568938, 1785638, 1447162,
+                    1005011, 330870, 130632, 21208))
+
+            return AAOptions()
+                .chart(aaChart)
+                .title(aaTitle)
+                .xAxisArray(arrayOf(aaXAxis1, aaXAxis2))
+                .yAxis(aaYAxis)
+                .plotOptions(aaPlotOptions)
+                .tooltip(aaTooltip)
+                .series(arrayOf(aaSeriesElement1, aaSeriesElement2))
+        }
+
     }
 }