Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> MPAndroidChart折線圖二

MPAndroidChart折線圖二

編輯:關於Android編程

3. public LineChartTools( LinkedList> list, Context ctx,LineChart  lineChart,
                           String name, String dateStart, String dateRange, TextView labelTime, TextView labelData){
        if (list != null && list.size() <= 0) {
            return;
        }
        context = ctx;
        chart = lineChart;
        //            查詢的類型名稱
        typeName = name;

        Map map = list.get(list.size() - 1);
        if ("1".equals(dateStart) && "1".equals(dateRange)) {
            //如果是,昨天,24小時制,添加一條空數據
            list.add(map);
        }
        mList =list;
        mDateStart =dateStart;
        mDateRange = dateRange;
        mLabelTime =labelTime;
        mLabelData = labelData;
    }
//chart數據的調用
    public void setLineChart(){
        loadLineChartData();
    setLineChartStyle();

    }

4、最後的調用
 //    設置表格數據
    private void setTable(LinkedList> tableList) {
        mLabelName.setText(titles[index]);
        if (tableList != null && tableList.size() > 0) {
            new LineChartTools(tableList, this,mLineChart, titles[index], mDateStart, mDateRange,mLabelTime,mLabelData).setLineChart();
        }
    }

三、遇到的問題以及解決的方式
1.x軸坐標顯示不完全
這裡寫圖片描述
這裡寫圖片描述

解決方式:設置屬性解決
chart.getXAxis().setAvoidFirstLastClipping(true);  //x軸上起點和終點坐標數顯示不完整

**2.x軸坐標數據錯亂(重點注意)

這裡寫圖片描述
這裡寫圖片描述

解決方式:*一定要先調用loadLineChartData()方法給圖表設置數據,再調用setLineChartStyle()* 方法設置圖表的樣式。順序一定不能打亂!!!!


3.x軸坐標軸設置間隔後,最後一個數據不顯示
設置間隔屬性:chart.getXAxis().setLabelsToSkip(5); 間隔為5
這裡寫圖片描述

解決方式:在集合數據的最後添加一條空數據
     Map map = list.get(list.size() - 1);
        if ("1".equals(dateStart) && "1".equals(dateRange)) {
            //如果是,昨天,24小時制,添加一條原來list集合裡的最後一個數據
            list.add(map);
        }
        mList =list;

4.x軸坐標顯示不完全

這裡寫圖片描述vcq9o7rO0tXiwO/Kx7u70rvW1su8wre1xKOsPGJyIC8+DQooMSm9q2xlYmFsserHqbXEsry+1rnMtqjU2tbQvOSjrLb4yMPUrUxpbmVDaGFydE1hcmtlclZpZXe1xLK8vtZsYXlvdXRSZXNvdXJjZc6qv9WhozxiciAvPg0KbGViYWyx6septcSyvL7Wucy2qNTa1tC85LXEsry+1jwvcD4NCjxwcmUgY2xhc3M9"brush:java;">

(2)將固定的標簽lebal的時間和統計(掃碼次數)的屬性傳入,從而動態的獲取統計的數據和時間(即x、y軸數據),然後獲取的數據設置給固定的標簽布局。
這裡寫圖片描述
layoutResource的布局文件
這裡寫圖片描述


public class LineChartMarkerView  extends MarkerView{
    private TextView mTime;
    private TextView mName;
    private TextView mData;
    private  String mDateStart;        //開始時間
    private  String mDateRange;        //時間間隔
//    private  LinkedList> mList;
    private  LinkedList> mList;
    private Map.Entry mFstMapEntry;

    public LineChartMarkerView(Context context, int layoutResource, String name,LinkedList>  list,TextView labelTime//時間
    ,TextView labelData//統計的數據) {
        super(context, layoutResource);

        if (null != list && list.size() > 0 && labelTime != null && labelData != null) {
            mList = list;
        }else {
            return;
        }

        mTime =labelTime;
        mData = labelData;
    }

    @Override
    public void refreshContent(Entry e, Highlight highlight) {
        //y軸數據
        int intVal = (int) e.getVal();
        String val = Integer.toString(intVal);
        //固定lebal設置統計數據(即y軸數據)
        mData.setText(val);
        //上面的時間
        if (e.getXIndex() < mList.size()) {
//            ContentUtil.makeLog("e.getXIndex()", e.getXIndex() + "");

            mFstMapEntry = Tools.fstMapEntry(mList.get(e.getXIndex()));
        }


        //今天和昨天顯示0:00、6:00、12:00格式顯示
        if (mFstMapEntry != null && mFstMapEntry.getKey() != null && mTime != null) {
         //固定lebal設置時間數據(即x軸數據)
            mTime.setText(mFstMapEntry.getKey());
        }

    }

    @Override
    public int getXOffset(float xpos) {

        return -(getWidth() / 3);

    }

    @Override
    public int getYOffset(float ypos) {
        return -getHeight();
    }

}
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved