Android K線圖圖表庫

VinsonGuo發表於2018-03-17

android-kline

基於MPAndroidChart的專業K線圖

專案地址

本專案通過繼承的方式定製了最新版本的MPAndroidChart,沒有修改MPAndroidChart的原始碼,所以對已經使用了MPAndroidChart的童鞋不會造成影響。

  • 解決了多圖表手勢同步的問題
  • 解決多圖表highlight聯動的問題
  • 使用簡單,兩行程式碼就可以實現專業K線效果

Demo

demo如下,也可以點選這裡下載

demo

What's new

  • 增加了MACD、KDJ指標的顯示和切換
  • 增加了五日的分時圖
  • 優化圖表的縮放,可以進行放大和縮小操作(之前只支援在初始狀態下的放大操作)
  • 拼接圖表的縮放功能(之前如果一個手指在K線圖,另一個手指在交易量圖的時候,圖表是不可以縮放的)
  • 全屏模式的示例
  • 分時圖增加漲跌幅的座標,並且漲跌幅為0%時豎直居中顯示
  • K線圖增加最大/最小值的顯示

使用方式

在專案build.gradle中新增依賴:

 allprojects {
        repositories {
            jcenter()
            maven { url "https://jitpack.io" }
        }
   }
   dependencies {
        compile com.github.gzw19931217:android-kline:1.0.0'
   }
複製程式碼

xml

    <com.guoziwei.klinelib.chart.KLineView
        android:id="@+id/kline"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
複製程式碼
    <com.guoziwei.klinelib.chart.TimeLineView
        android:id="@+id/timeline"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
複製程式碼

java

       KLineView  K線圖控制元件
       public void showKdj() 顯示kdj指標
       	public void showMacd() 顯示macd指標
       	public void showVolume() 顯示交易量指標
       public void initData(List<HisData> hisDatas) 初始化資料,獲取到資料後呼叫
       public void addData(HisData hisData) 圖表末尾增加一個資料
       public void refreshData(float price) 重新整理最後一個點的價格(不增加資料)
       
       
       TimeLineView 分時圖控制元件
       public void initData(List<HisData> hisDatas) 初始化資料,獲取到資料後呼叫
       public void addData(HisData hisData) 圖表末尾增加一個資料
       public void refreshData(float price) 重新整理最後一個點的價格(不增加資料)
       public void initDatas(List<HisData>... hisDatas) 初始化多日的資料,比如說5日的資料,就傳5個list過去
       public void setLastClose(double lastClose)  設定昨天的收盤價,用於計算漲跌幅的座標
       
       兩個類共同的api:
       public void setCount(int init, int max, int min) 設定圖示的可見個數,分別是初始值,最大值,最小值。比如(100,300,50)就是開始的時候100個點,最小可以縮放到300個點,最大可以放大到50個點
       
複製程式碼

注意: 這裡需要接收一個HisData的List,HisData需要如下的幾個資料(開盤、收盤、最高、最低、買賣量、時間),其他的指標會根據公式計算出來

在本專案中,時間戳date相當於唯一的id,如果重複的話無法將這個data新增到圖表中

  public HisData(double open, double close, double high, double low,  int vol, long date)
複製程式碼

個性化:如果需要配置顏色,到colors.xml中配置。

相關文章