Android利用MPAndroidChart繪制曲線圖表的基礎(chǔ)教程
前言
最近看了一下 Android 上的圖表控件,去年做過一款應(yīng)用也已上架了,也用到了圖表控件,但是只是按照官方 demo 集成了,并沒有過多的研究。
我最近基本上是面向 Github 編程了,拿別人造好的輪子拿來用,不能直接用的就改改再用,實在不好實現(xiàn)的就勸說產(chǎn)品去改需求,基本這是個套路。
既然是圖表控件,就上 github 一番搜索,關(guān)鍵字 chart,按照 java 一篩選,再按照 start 數(shù)量排序,由高到低。基本上 start 從高到低的圖表控件就是 MPAndroidChart、hellocharts-android、WilliamChart、XCL-Charts、EazeGraph、Jgraph 這么幾個了。再排除那些常年不更新的,issues 常年無人問津的一些庫,我基本確定就使用 MPAndroidChart 了,我找其它庫也是這么個套路。所以日常工作就是逛 github,看到中意的就 star make 一下,這和逛淘寶是一個道理[yahch]。
話不多說,先看一下最終效果。
MPAndroidChart 的官方文檔可以說是非常詳細(xì)了,基本上只要照著來就行了。
方法如下
第一步是 Gradle 引用和控件使用:
allprojects { repositories { maven { url "https://jitpack.io" } } }
基本上很多項目都是通過通過 maven 官方和 jitpack了,沒什么好說的。
dependencies { implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3' }
我這里只用到了折線圖,其它還有很多種類的圖表,把項目 clone 下來跑一遍就知道了。
<com.github.mikephil.charting.charts.LineChart android:id="@+id/lineChart1" android:layout_width="match_parent" android:layout_height="150dp" android:layout_marginTop="10dp"></com.github.mikephil.charting.charts.LineChart>
第二步是構(gòu)建要顯示的數(shù)據(jù)。
ArrayList<Entry> entryArrayList = new ArrayList<>(); for (int i = 0; i < chartDataBean.Altitudes.length; i++) { Entry entry = new Entry(i, (float) chartDataBean.Altitudes[i]); entryArrayList.add(entry); } //yahch
Entry 的兩個參數(shù) x,y 都是 float 類型的,我開始以為都表示 x,y 軸的值,但是想想若是 x 軸不是數(shù)值那 float 類型也表示不了,其實這個 x 軸的 float 類型的值就是 x 軸的下標(biāo)了。
在折線圖表中,一個線條就是一個 LineDataSet ,構(gòu)建線條,也很簡單。就是一通設(shè)置,都是按照字面意思了。
LineDataSet lineDataSet = new LineDataSet(entryArrayList, "demo"); lineDataSet.setDrawCircles(false); lineDataSet.setDrawFilled(true); lineDataSet.setDrawValues(false); if (Utils.getSDKInt() >= 18) { Drawable drawable = ContextCompat.getDrawable(activity, R.drawable.chart_bg); lineDataSet.setFillDrawable(drawable); } else { lineDataSet.setFillColor(Color.BLACK); } lineDataSet.setColor(Color.parseColor("#7093C9")); lineDataSet.setLineWidth(2f); lineDataSet.setDrawHighlightIndicators(false); lineDataSet.setMode(LineDataSet.Mode.CUBIC_BEZIER); // yahch
LineChart 設(shè)置數(shù)據(jù)方法是 LineChart.setData(LineData lineData) ,所以還要構(gòu)造一個 LineData 。
LineData lineData = new LineData(lineDataSet);
假如我們有需求需要繪制一條平均刻線,可以使用 LimitLine。
LimitLine avgLine = new LimitLine(123f); avgLine.setLineColor(Color.parseColor("#FFFFFF")); lineChart1.getAxisLeft().addLimitLine(avgLine);
作為靈魂畫手,我當(dāng)時就畫了一幅圖。
然后點擊全屏橫向顯示怎么個做法呢,很簡單,這個并不是非要在當(dāng)前的 Activity 中橫向顯示這個圖表,重新開一個 Activity 就是了,并在 onCreate 的時候去掉 ActionBar 就行了。
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getSupportActionBar().hide(); setContentView(R.layout.activity_full_altitude_chart); } //yahch
那怎么橫向呢,在 AndroidManifest.xml 設(shè)置這個 Activity 的 screenOrientation 參數(shù)為 landscape,強制設(shè)置橫向屏幕即可。
OK,安裝上的折線圖表就搞完了,有木有很簡單。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
Android自定義TitleView標(biāo)題開發(fā)實例
這篇文章主要介紹了Android自定義TitleView標(biāo)題開發(fā)實例的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-09-09Android DataBinding單向數(shù)據(jù)綁定深入探究
看了谷歌官方文章確實寫的太簡略了,甚至看完之后有很多地方還不知道怎么回事兒或者怎么用,那么接下來我將通過文章全面介紹一下DataBinding單向數(shù)據(jù)綁定2022-11-11Android自定義布局實現(xiàn)仿qq側(cè)滑部分代碼
這篇文章主要為大家詳細(xì)介紹了自定義布局實現(xiàn)仿qq側(cè)滑Android部分代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03Android開發(fā)中比較耗時的一些操作小結(jié)
這篇文章主要介紹了Android開發(fā)中比較耗時的一些操作小結(jié),本文根據(jù)實際開發(fā)經(jīng)驗總結(jié)了6條比較耗時的編程操作,請大家注意下,需要的朋友可以參考下2015-06-06Android基于開源項目xutils3實現(xiàn)下載
這篇文章主要介紹了Android基于開源項目xutils3實現(xiàn)下載,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-11-11Android開發(fā)之多線程中實現(xiàn)利用自定義控件繪制小球并完成小球自動下落功能實例
這篇文章主要介紹了Android開發(fā)之多線程中實現(xiàn)利用自定義控件繪制小球并完成小球自動下落功能的方法,涉及Android多線程編程及圖形繪制相關(guān)技巧,需要的朋友可以參考下2015-12-12Android使用Intent啟動其他非系統(tǒng)應(yīng)用程序的方法
這篇文章主要介紹了Android使用Intent啟動其他非系統(tǒng)應(yīng)用程序的方法,實例分析了Intent調(diào)用系統(tǒng)應(yīng)用程序的相關(guān)技巧,需要的朋友可以參考下2015-12-12Android中ViewPager實現(xiàn)滑動指示條及與Fragment的配合
這篇文章主要介紹了Android中ViewPager實現(xiàn)滑動指示條及與Fragment的配合,使用Fragment實現(xiàn)ViewPager的滑動是一種比較推薦的做法,需要的朋友可以參考下2016-03-03