|
|
@@ -0,0 +1,146 @@
|
|
|
+package cn.muchinfo.rma.view.base.chart.old.timeCharts;
|
|
|
+
|
|
|
+import android.content.Context;
|
|
|
+import android.graphics.Color;
|
|
|
+import android.util.AttributeSet;
|
|
|
+import android.view.LayoutInflater;
|
|
|
+import android.view.View;
|
|
|
+import android.widget.FrameLayout;
|
|
|
+import android.widget.TextView;
|
|
|
+
|
|
|
+import androidx.annotation.NonNull;
|
|
|
+import androidx.annotation.Nullable;
|
|
|
+import com.desfate.chart.ChartConstant;
|
|
|
+import com.desfate.chart.MACandleStickChart;
|
|
|
+import com.desfate.chart.MinusStickChart;
|
|
|
+import com.desfate.chart.entity.LineEntity;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+import cn.muchinfo.rma.R;
|
|
|
+import cn.muchinfo.rma.global.data.chart.HistoryDatas;
|
|
|
+import cn.muchinfo.rma.view.base.chart.ChartDataAdapter;
|
|
|
+import cn.muchinfo.rma.view.base.chart.KChartTools;
|
|
|
+
|
|
|
+public class KChartView extends FrameLayout {
|
|
|
+
|
|
|
+ View view;
|
|
|
+ Context context;
|
|
|
+ MACandleStickChart candle_chart;
|
|
|
+ MinusStickChart minusStickChart;
|
|
|
+ TextView info_text;
|
|
|
+
|
|
|
+ public KChartView(@NonNull Context context) {
|
|
|
+ super(context);
|
|
|
+ this.context = context;
|
|
|
+ initView();
|
|
|
+ }
|
|
|
+
|
|
|
+ public KChartView(@NonNull Context context, @Nullable AttributeSet attrs) {
|
|
|
+ super(context, attrs);
|
|
|
+ this.context = context;
|
|
|
+ initView();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void initView(){
|
|
|
+ view = LayoutInflater.from(context).inflate(R.layout.k_chart_view, null);
|
|
|
+ candle_chart = view.findViewById(R.id.candle_chart);
|
|
|
+ minusStickChart = view.findViewById(R.id.minus_chart);
|
|
|
+ info_text = view.findViewById(R.id.info_text);
|
|
|
+
|
|
|
+ setCandleChartConfig();
|
|
|
+ setMinusStickChartConfig();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void setCandleChartConfig(){
|
|
|
+ int fontSize = getResources().getDimensionPixelSize(R.dimen.chart_font_size);
|
|
|
+ candle_chart.setLongitudeFontSize(fontSize);
|
|
|
+ candle_chart.setLatitudeFontSize(fontSize);
|
|
|
+
|
|
|
+ candle_chart.setAxisXColor(Color.LTGRAY);
|
|
|
+ candle_chart.setAxisYColor(Color.LTGRAY);
|
|
|
+ candle_chart.setLatitudeColor(Color.GRAY);
|
|
|
+ candle_chart.setLongitudeColor(Color.GRAY);
|
|
|
+ candle_chart.setBorderColor(Color.LTGRAY);
|
|
|
+ candle_chart.setLongitudeFontColor(Color.GRAY);
|
|
|
+ candle_chart.setLatitudeFontColor(Color.GRAY);
|
|
|
+ candle_chart.setAxisMarginRight(1);
|
|
|
+ candle_chart.setAxisMarginTop(5);
|
|
|
+ // 最大显示足数
|
|
|
+ candle_chart.setMaxSticksNum(ChartConstant.MAXSTICKNUM);
|
|
|
+ // 最大纬线数
|
|
|
+ candle_chart.setLatitudeNum(4);
|
|
|
+ // 最大经线数
|
|
|
+ candle_chart.setLongitudeNum(1);
|
|
|
+ candle_chart.setStartIndex(-1);
|
|
|
+ candle_chart.setDisplayAxisXTitle(true);
|
|
|
+ candle_chart.setDisplayAxisYTitle(true);
|
|
|
+ candle_chart.setDisplayLatitude(true);
|
|
|
+ candle_chart.setDisplayLongitude(true);
|
|
|
+ candle_chart.setBackgroundColor(getResources().getColor(R.color.p_global_write_color));
|
|
|
+ candle_chart.setDisplayCrossXOnTouch(true);
|
|
|
+ candle_chart.setDisplayCrossYOnTouch(true);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void setMinusStickChartConfig(){
|
|
|
+ minusStickChart.setMaxSticksNum(ChartConstant.MAXSTICKNUM);
|
|
|
+ minusStickChart.setAxisMarginRight(1);
|
|
|
+ minusStickChart.setAxisMarginTop(5);
|
|
|
+ int fontSize = getResources().getDimensionPixelSize(R.dimen.chart_font_size);
|
|
|
+ minusStickChart.setLongitudeFontSize(fontSize);
|
|
|
+ minusStickChart.setLatitudeFontSize(fontSize);
|
|
|
+ minusStickChart.setBorderColor(Color.GRAY);
|
|
|
+ minusStickChart.setAxisXColor(R.color.p_global_write_color);
|
|
|
+ minusStickChart.setAxisYColor(R.color.p_global_write_color);
|
|
|
+ minusStickChart.setLatitudeFontColor(Color.GRAY);
|
|
|
+ minusStickChart.setLatitudeColor(Color.GRAY);
|
|
|
+ minusStickChart.setLongitudeFontColor(Color.GRAY);
|
|
|
+ minusStickChart.setLongitudeColor(Color.GRAY);
|
|
|
+ minusStickChart.setBackgroundColor(getResources().getColor(R.color.p_global_write_color));
|
|
|
+ // 最大纬线数
|
|
|
+ minusStickChart.setLatitudeNum(2);
|
|
|
+ // 最大经线数
|
|
|
+ minusStickChart.setLongitudeNum(1);
|
|
|
+ minusStickChart.setStartIndex(-1);
|
|
|
+ minusStickChart.setAxisMarginBottom(0);// 不绘制x轴坐标设为0
|
|
|
+ minusStickChart.setDisplayAxisXTitle(false);
|
|
|
+ minusStickChart.setDisplayAxisYTitle(true);
|
|
|
+ minusStickChart.setDisplayLatitude(true);
|
|
|
+ minusStickChart.setDisplayLongitude(true);
|
|
|
+ minusStickChart.setStickBorderColor(Color.TRANSPARENT);
|
|
|
+ minusStickChart.setStickFillColor(Color.GREEN);
|
|
|
+ minusStickChart.setDisplayCrossXOnTouch(true);
|
|
|
+ minusStickChart.setEnableCrossOnTouch(false);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 历史数据
|
|
|
+ * @param history 历史数据
|
|
|
+ */
|
|
|
+ public void setDates(String goodsCode, List<HistoryDatas> history){
|
|
|
+ if(history == null || history.isEmpty()) return; // 没有数据
|
|
|
+ // 这是需要画的线
|
|
|
+ List<LineEntity> lines = new ArrayList<>();
|
|
|
+ LineEntity M5Line = new LineEntity();;
|
|
|
+ M5Line.setTitle("MA5");
|
|
|
+ M5Line.setLineColor(getResources().getColor(com.desfate.chart.R.color.mtp_chart_k_ma5));
|
|
|
+ M5Line.setLineData(new KChartTools().getMDatesAdapter(5, history));
|
|
|
+ lines.add(M5Line);
|
|
|
+ LineEntity M10Line = new LineEntity();;
|
|
|
+ M10Line.setTitle("MA10");
|
|
|
+ M10Line.setLineColor(getResources().getColor(com.desfate.chart.R.color.mtp_chart_k_ma5));
|
|
|
+ M10Line.setLineData(new KChartTools().getMDatesAdapter(10, history));
|
|
|
+ lines.add(M10Line);
|
|
|
+ LineEntity M15Line = new LineEntity();
|
|
|
+ M15Line.setTitle("MA15");
|
|
|
+ M15Line.setLineColor(getResources().getColor(com.desfate.chart.R.color.mtp_chart_k_ma5));
|
|
|
+ M15Line.setLineData(new KChartTools().getMDatesAdapter(15, history));
|
|
|
+ lines.add(M15Line);
|
|
|
+ minusStickChart.setTasLastPrice(String.valueOf(new ChartDataAdapter().getGoodsInfoMarket(goodsCode).getQuoteDayData().getLast()));
|
|
|
+ minusStickChart.setNewPriceColor(getResources().getColor(R.color.p_up_color));
|
|
|
+ minusStickChart.setLineData(lines);
|
|
|
+ minusStickChart.setDecimalNum(new ChartDataAdapter().getGoodsInfoMarket(goodsCode).getGoodsInfo().getDecimalplace());
|
|
|
+ minusStickChart.postInvalidate();
|
|
|
+ }
|
|
|
+}
|