Android

Kotlin MPAndroidChartライブラリを使い移動平均線を描画してみる。

投稿日:2019年3月11日 更新日:

はじめに

こんにちは、suzukiです。前回の記事に続きKotlinでMPAndroidChartライブラリを使い移動平均線を描画します。
Kolinはまだまだ勉強中なので練習として作成しました。

MPAndroidChartライブラリについて

今回KotlinでMPAndroidChartを利用してチャートを書きます。
Androidのサンプルはストアからダウンロードが可能です。

ライブラリの導入

Androidは追加方法がシンプルでいいですね。
build.gradle(Project)

build.gradle(Module)

上記を追加してgradleのSyncを行えばライブラリの準備が整います。

描画の準備

次にXMLでレイアウトを作成します。
今回はSwift同様に画面いっぱいに3つのチャートを配置していきます。
こちらの記事を参考に作成しました。

  • LineChart CandleStickChart CombinedChartを追加
  • 上下左右に制約を追加
  • 三つのChartの高さを等しく

折れ線グラフを描画する

シンプルな折れ線グラフを描画しようと思います。
完成予定

LineChartの設定

LineChartに設定できる内容はたくさんあります。
今回は画像のようなシンプルな線グラフを表示します。
数値などの文字にフォントが設定する内容を先に記述します(ご指摘いただきありがとうございます。)

apply便利ですね。

チャートのタップ時のリスナーを受け取るために下記を記述します。

LineChart用のデータ作成

グラフ用のデータはサンプルを参考に + Swiftと同じ様に作っています。

LineChartに描画

先ほどの二つの関数を使い折れ線を描画します。

折れ線グラフの描画が完了しました。
sampleがKotlinではないので置き換えるの苦労しました。
getterとsetterがあるとSwiftのプロパティのように記述できます。
setDrawCircles(false)と記述しているのは、DrawCirclesのgetterがisDrawCirclesEnabledと定義されており、制約に合わないためです。

ローソク足を描画する

次にローソク足の描画を行います。
完成予定

CandleStickChartの設定

CandleStickChartでは下記のような設定を行います。
LineChertとほとんど一緒です。Kotlin使っているのでXMLのIDでインスタンスが取得できるの便利ですね。

CandleStickChart用のデータ作成

CandleStickChartに描画

先ほど同様にonCreateにローソク足用のデータを追加しました。

Combined-Chartにローソク足と移動平均線を描画

それでは最後に複合グラフを描画します。
Swiftと違いバグなく実装できました。
完成予定

CombinedChartの設定

下記の設定を行います。
表示領域を少し調整する必要がありました。
キャンドル用のデータを何も考えずに描画すると最初と最後が見切れてしまいます。
今回は最大を20fと最小を0fと設定しています。入力されるデータ数を参照して調整できるように変更したほうがいいかもしれません。

CombinedChart用のデータ作成

移動平均線用の計算ロジックを組み込みます。
private var endPoints = mutableListOf() を宣言します。
宣言したendPointsにキャンドルデータの作成のロジック部分で終値を保存します。

移動平均線は5つのデータ分の終値の平均でデータをもとに折れ線グラフを描画作成します。

CombinedChartに描画

最後にonCreateでデータの値をセットします。

最後に

最後までありがとうございます。SwiftとKotlin両方で同じようなコードを書きました。
Kotlinの良さを最大限は引き出せていないかと思いますし、AndroidStudioに慣れてもおりません。
少しずつ慣れていこうと思いますので、またAndroidの記事もあげていきたいと思っております。

おすすめ書籍

Kotlinスタートブック -新しいAndroidプログラミング Kotlinイン・アクション 速習 Kotlin: Javaより簡単!新Android開発言語を今すぐマスター 速習シリーズ

blog-page_footer_336




blog-page_footer_336




-Android
-

執筆者:


  1. 匿名 より:

    mTypeface がエラーになります

    • suzuki より:

      ご指摘ありがとうございます。
      宣言部分の表記もれでした。LineChartの設定の箇所に下記を追記させていただいております。
      private var mTypeface = Typeface.create(Typeface.SANS_SERIF, Typeface.NORMAL)

comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

【Java】ストリームについてまとめてみました

1 はじめに2 Streamの分類3 テキストファイルの読み書き4 バイナリファイルの読み書き5 読み書きのバッファリング処理6 さいごに7 おすすめ書籍 はじめに Javaではすべての入出力をストリ ...

Android StudioのInstant Runの種類

1 はじめに2 概要3 全部で3種類4 コールドスワップになる条件5 ビルドおよびデプロイが実行される条件6 再実行について7 参考ページ8 さいごに はじめに はじめまして、nomuraと申します。 ...

Android Studioでエラーログを詳細表示する

1 はじめに2 初期設定でのビルドエラーメッセージ3 詳細なビルドエラーメッセージを出力4 おまけ5 さいごに6 おすすめ書籍 はじめに こんにちは。Android開発を久しぶりにやっているのですが、 ...

AndroidでWebViewを使用するときに気をつけたいポイント追加4選!

1 はじめに2 Cookie2.1 Cookieを設定する2.2 Cookieを取得する3 ハンドリングの効かないページ遷移3.1 POSTでのページ遷移3.2 PDFなど、WebViewで開くことの ...

Android JavaでS3への画像アップロード

1 はじめに2 AWS上での事前準備3 Android StudioのGradleでAWS SDKをインストール4 ManifestにPermissionの追加5 カメラで写真を撮影し、保存先のPat ...

フォロー

blog-page_side_responsive

2019年3月
 12
3456789
10111213141516
17181920212223
24252627282930
31  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。