仿火币app tradingview数据移植到安卓客户端

仿火币app tradingview数据移植到安卓客户端_第1张图片

如图是产品需求 需要构造如图的K线走势(图上部分) 和 交易量(图下部分)

第一次遇到这样的需求,公司人不多,赶进度,不扯虚的,在一顿搜索之后。。。
GitHub上搜了很多Chart,和Stock的demo 一顿学习和修改,找到了一个差不多的项目,https://github.com/AndroidJiang/StockChart,在此感谢博主,节省了很多时间。

在clone这个项目之后,基本的结构已经差不多了,我们需要做的是修改UI和填充tradingview网页版的数据。

1 修改K线的UI 加入以下代码即可:
candleDataSet.setDecreasingColor(Color.parseColor(“#00c882”));//下跌矩形的颜色
candleDataSet.setIncreasingPaintStyle(Paint.Style.FILL);//是否是实线
candleDataSet.setIncreasingColor(Color.parseColor(“#e86e42”));//增长矩形的颜色
candleDataSet.setShadowColorSameAsCandle(true);//矩形两端的线是否和矩形颜色相同

2 修改下方成交量的UI
找到BarChartRenderer.java文件
找到作者留下的修改颜色的注释,加入自己的逻辑代码和色值,为了保证触发这段代码,需要在barDataSet里添加如下代码
List listColor=new ArrayList<>();
listColor.add(Color.parseColor(“#00c882”));
listColor.add(Color.parseColor(“#e86e42”));
barDataSet.setColors(listColor);

3 获取和填充网页端的数据
代码如下:
省略网络请求的部分。
public void parseKLine2(JSONObject obj) {

    ArrayList kLineBeans = new ArrayList<>();
    JSONArray mTimeArray = obj.optJSONArray("t");
    if (mTimeArray != null) {
        kDatas.clear();
        int count = mTimeArray.length();
        JSONArray mHighArray = obj.optJSONArray("h");
        JSONArray mLowArray = obj.optJSONArray("l");
        JSONArray mOpenArray = obj.optJSONArray("o");
        JSONArray mCloseArray = obj.optJSONArray("c");
        JSONArray mVolumeArray = obj.optJSONArray("v");
        for (int i = 0; i < count; i++) {
            KLineBean kLineData = new KLineBean();
            SimpleDateFormat sdf = new SimpleDateFormat("MM-dd HH:mm");
            kLineData.date = sdf.format( new Date(((int)mTimeArray.opt(i) * 1000)));
            kLineData.open = Float.parseFloat(mOpenArray.opt(i) + "");
            kLineData.close = Float.parseFloat(mCloseArray.opt(i) + "");
            kLineData.high = Float.parseFloat(mHighArray.opt(i) + "");
            kLineData.low = Float.parseFloat(mLowArray.opt(i) + "");
            kLineData.vol = Float.parseFloat(mVolumeArray.opt(i) + "");
            kLineBeans.add(kLineData);
            volmax = Math.max(kLineData.vol, volmax);
            xValuesLabel.put(i, kLineData.date);
        }
    }
    kDatas.addAll(kLineBeans);
}

效果图如下:

仿火币app tradingview数据移植到安卓客户端_第2张图片

现在这样已经基本差不多了,可以在这个的基础上再进行细微的改动,记录下。

微信号:CL499685132 欢迎一起交流

你可能感兴趣的:(K线,android)