Android圖表年度最強總結,一篇文章從入門到精通!

說到Android圖表,不得不說一說MPAndroidChart這個強大的開源圖表庫,至於有多強大,先給你看看實現的效果圖!如果效果圖成功地引起了你的注意,那麼,嘿嘿嘿,當然是把這篇文章看完,最後再點個贊!


悄咪咪告訴你,這只是可實現效果的冰山一角(還有很多效果圖我放在文章的最後面了)
在這裏插入圖片描述
MPAndroidChart是GitHub一個名叫Philipp的大神所寫,可又繪製各種圖表的一個庫。在現在大數據即將來臨的時代,用圖表來展示數據,更直觀易懂。並且很多行業(比如股票、醫療等等…)都需要圖表來支撐。所以,畫圖對我們程序員來說也是一門必要的技術。其中圖表的類型有這些:**LineChart(折線圖)BarChart(柱狀圖),HorizontalBarChart(橫向柱狀圖)CandleStickChart(蠟燭圖)BubbleChart(氣泡圖)PieChart(餅狀圖)RadarChart(雷達圖)ScatterChart(散點圖)CombinedChart(組合圖)。**

添加依賴

只需要簡單地添加上依賴就可以愉快的使用這個強大的圖標庫了!
具體操作請跳轉至我的原創博客:MPAndroidChart的詳細使用——添加依賴

創建視圖以及簡單實現

實現一個簡單的圖很簡單,首先需要在你的XML文件中添加上一個視圖(View),然後後臺代碼中創建一個List<Entry>,再把X軸和Y軸數據傳入List中,接着創建DataSet對象和Data對象傳入相應的參數,最後控件調用setData()方法傳入你的Data對象,一個折線圖就生成了!大致代碼就是這樣子:

//其中兩個參數對應的分別是   X軸   Y軸
list.add(new Entry(0,7));     
list.add(new Entry(1,10));
list.add(new Entry(2,12));
list.add(new Entry(3,6));
list.add(new Entry(4,3));
//list是你這條線的數據  "語文" 是你對這條線的描述
LineDataSet lineDataSet=new LineDataSet(list,"語文");   
LineData lineData=new LineData(lineDataSet);
//有多條數據則使用adddataset()方法 參數是你的DataSet
//lineData.addDataSet(lineDataSet);

具體代碼以及實現請跳轉至我的原創博客:MPAndroidChart的詳細使用——創建視圖以及簡單實現

圖表的交互

圖表的交互,指的是你對圖表的一些操作,比如:縮放手勢、點擊、長按、拖拉等等,這些事件都可以通過設置來進行啓用(或禁用)以及事件的監聽回調。如下是監聽回調的部分方法:

public interface OnChartGestureListener {
    //長按監聽事件回調
    public void onChartLongPressed(MotionEvent me);
    //雙擊監聽事件回調
    public void onChartDoubleTapped(MotionEvent me);
   //單擊監聽事件回調
    public void onChartSingleTapped(MotionEvent me);
}

具體代碼以及更多實現請跳轉至我的原創博客:MPAndroidChart的詳細使用——圖表的交互

高亮

在這裏插入圖片描述
如上圖,高亮指的是當你點擊圖表中某個數據時,那個數據會突出顯示(當然你可以禁用),高亮顯示可以啓用(或禁用),也可以對高亮進行樣式的設置、甚至可以通過重寫高亮類然後使用setHighlighter(ChartHighlighter highlighter)方法傳入你自定義的高亮類進行自定義樣式(比如定義成一個圖片的樣子…),並且高亮也有事件的監聽回調:

public interface OnChartValueSelectedListener {
    //選中一處高亮時的回調
    public void onValueSelected(Entry e, Highlight h);
    //沒有選中時的回調
    public void onNothingSelected();
}

具體代碼以及更多實現請跳轉至我的原創博客:MPAndroidChart的詳細使用——高亮

座標軸

座標軸作爲圖表最重要的元素之一,對其進行一番美化是非常有必要的!比如你可以通過setEnabled(boolean enabled)方法設置是否繪製座標軸,也可以通過setAxisMaximum(float max)方法設置座標軸上的最大值、最小值。根據需要,你甚至可以通過setInverted(boolean enabled)把座標軸反轉過來!當然,座標軸有一個非常重要的屬性是經常需要設置的,那就是座標軸上的標籤,可能你需要顯示的X軸是星期的形式,而默認的則是阿拉伯數字,這裏直接通過.setValueFormatter();方法重新格式化一下即可!部分X軸的實現方法如下:

XAxis xAxis = chart.getXAxis();//實例化X軸對象進行使用
//設置X軸位置 有以下幾種   TOP   BOTTOM   BOTH_SIDED   TOP_INSIDE    BOTTOM_INSIDE
xAxis.setPosition(XAxisPosition.BOTTOM);
//設置X軸標籤數據繪製的角度   也就是X軸上數據標籤的旋轉角度
xAxis.setLabelRotationAngle(90)
xAxis.setTextColor(Color.RED);//設置標籤字體顏色
// 自定義X軸上的數據格式
xAxis.setValueFormatter(new MyCustomFormatter());

具體代碼以及更多實現請跳轉至我的原創博客:MPAndroidChart的詳細使用——座標軸(X軸、Y軸、零線)

添加數據

添加數據其實很簡單,只需要寫一個List,然後向裏面添加你的數據,但是由於繪製不同圖表所需要填入的參數不同,List<>尖括號裏面所包含的類型也需要轉變,比如折線圖(LineChart)是List,比如條形圖(BarChart)是List,而餅圖(PieChart)則是List等等,每種圖都有不同的Entry,所以你添加數據時參數也會有所差異,下面列舉了幾個例子:

//折線圖(LineChart)添加數據
List<Entry>list=new ArrayList<>();   
//其中兩個參數對應的分別是   X軸   Y軸
list.add(new Entry(1,10));
list.add(new Entry(2,12));

//條形圖(BarChart)添加數據
List<BarEntry>list=new ArrayList<>();
//其中兩個數字對應的分別是   X軸   Y軸
list.add(new BarEntry(1,7));     
list.add(new BarEntry(2,10));

//餅圖(PieChart)添加數據
List<PieEntry> list= new ArrayList<>();
//第一個參數是當前所佔區域的大小數據,第二個參數是當前扇形的描述
list.add(new PieEntry(20, "軟件設計"));
list.add(new PieEntry(30, "英語"));

具體代碼以及更多實現請跳轉至我的原創博客:MPAndroidChart的詳細使用——設置數據

ValueFormatter接口

如下圖,其中折線上數據的單位、X軸標籤的自定義都是通過ValueFormatter接口來實現的,ValueFormatter接口可以對圖表數據、X軸、Y軸進行數據的格式化(自定義),在實際開發中是一個非常常用的接口,也是學習圖表必學的技能點之一!
在這裏插入圖片描述
在這裏插入圖片描述
具體代碼以及更多實現請跳轉至我的原創博客:MPAndroidChart的詳細使用——ValueFormatter接口

圖表樣式設置

在這裏插入圖片描述
說到圖表的一些樣式設置,如上圖是簡單地設置了一下圖表的背景顏色,想要作出一個漂亮的圖表,圖表的整塊視圖的樣式設置就顯得極爲重要了,比如你需要調整一下整個圖表的背景顏色只需要調用setBackgroundColor(int color)方法,比如你想設置整個圖表的邊框以及邊框線的寬度只需要調用setBorderColor(int color)setBorderWidth(float width)方法即可,等等的方法還有很多…
具體代碼以及更多實現請跳轉至我的原創博客:MPAndroidChart的詳細使用——圖表的設置and圖表樣式設置

圖例

圖例同樣作爲圖表最重要的元素之一,其樣式的美化也是學習圖表必不可少的一門功課,如下圖,圖例的樣式以及位置那是千變萬化,只需要小小几行代碼,你就可以擁有一個精美的小圖例,你可以調用setEnabled(boolean enabled)方法來禁用(或啓用)圖例,你也可以調用setPosition(LegendPosition pos)方法來設置圖例在圖表中的位置,你甚至可以setCustom(int[] colors, String[] labels)自定義圖例的顏色以及標籤文本的內容!
具體代碼以及更多實現請跳轉至我的原創博客:MPAndroidChart的詳細使用——Legend圖例的詳細設置

在這裏插入圖片描述 在這裏插入圖片描述
在這裏插入圖片描述 在這裏插入圖片描述

圖表的描述(右下角的英文)

在這裏插入圖片描述
剛學習圖表的同學可能會注意到,無論畫的是什麼類型的圖表,右下角總是會有一串很小的英文字母,也不知道幹啥的,總是和狗皮膏藥一樣跟着你的每一個圖表,當然英語比較好的同學就能看懂單詞的意思,那就是圖表的描述,實際開發中我們用到圖表的描述的時候並不多,你要說給圖表加描述,你大可以在圖表的上方加上一個TextView,可以實現更多的標題樣式,而這個描述你要讓它顯示在你的圖表正上方,然後去定義一些字體大小、字體顏色完全不如去寫一個TextView簡單,說歸說,用法還是要會的,嘿嘿嘿
具體代碼以及更多實現請跳轉至我的原創博客:MPAndroidChart的詳細使用——圖表描述的設置(右下角的那串英文)

圖表動態數據

在這裏插入圖片描述
如上圖,動態數據也是實際開發中經常需要用到的屬性,這裏演示的添加數據和刪除數據,當然如果你是要做一個實時更新數據圖表也是同理,只需要對你的數據重新進行設置,然後調用.notifyDataSetChanged().invalidate()方法對圖表的數據以及顯示進行更新,你就會看到一個擁有全新數據的圖表出現在你面前!
具體代碼以及更多實現請跳轉至我的原創博客:MPAndroidChart的詳細使用——圖表動態實時數據

修改視窗顯示

修改視窗顯示,實際上是對View的顯示進行一些設置,比如利用setVisibleXRangeMaximum(float maxXRange)方法,對一次最大顯示的X軸大小進行定義,或者利用setExtraOffsets(float left, float top, float right, float bottom)設置額外的偏移量(圍繞圖表視圖),再或者可以調用centerViewTo(float xValue, float yValue, AxisDependency axis)將當前視圖的中心移動到指定的x值和y值,以及利用代碼對視圖進行縮放等等…
具體代碼以及更多實現請跳轉至我的原創博客:MPAndroidChart的詳細使用——修改視窗顯示

動畫

在這裏插入圖片描述
作爲一名效果派,一個圖表沒有個像樣的動畫哪裏行?木呆木呆那都不是我的風格,這裏只是演示了動畫中最簡單的Y軸動畫,注意這是最簡單的,可以說是最Low的效果,有多少種你就數數下面多少種吧(20+),效果之多我都想用圖表做個動畫片了~

public enum EasingOption {//由於效果太多,中間用逗號隔開了
Linear,EaseInQuad,EaseOutQuad,EaseInOutQuad,EaseInCubic,EaseOutCubic,EaseInOutCubic,EaseInQuart,
EaseOutQuart,EaseInOutQuart,EaseInSine,EaseOutSine,EaseInOutSine,EaseInExpo,EaseOutExpo,EaseInOutExpo,
EaseInCirc,EaseOutCirc,EaseInOutCirc,EaseInElastic,EaseOutElastic,EaseInOutElastic,EaseInBack,EaseOutBack,
EaseInOutBack,EaseInBounce,EaseOutBounce,EaseInOutBounce
}

具體代碼以及更多實現請跳轉至我的原創博客:MPAndroidChart的詳細使用——動畫

MarkerView

iMarker接口可以實現自定義高亮顯示標記的視圖,只需要寫一個類去繼承MarkerView,然後實例化Marker以後,調用圖表的.setMarker()方法即可。
這裏是兩個預設的IMarker

MarkerView 允許加載一個layout去展示對應的標註,繼承這個類並重寫refreshContent(…)方法來使用標註數據
MarkerImage 允許加載一張圖片在標註上顯示對應的圖片,繼承這個類並重寫refreshContent(…)方法來使用標註數據

具體代碼以及更多實現請跳轉至我的原創博客:MPAndroidChart的詳細使用——MarkerView

ChartData類以及ChartData子類

ChartData類是所有數據類(子類)的基類,類似於LineData, BarData、…諸若此類。它用於爲Chart通過setData(…)圖表的方法。其實很多時候用ChartData的子類的方法就能夠滿足功能需求,這裏是爲了讓你更好的熟悉和了解圖表的數據模型。先寫一個類繼承ChartData,然後重寫一些方法等等,這裏不多BB。
具體代碼以及更多實現請跳轉至我的原創博客:MPAndroidChart的詳細使用——ChartData類以及ChartData子類

DataSet類以及DataSet子類

DataSet類是所有數據集類(子類)的基類,類似於LineDataSet, BarDataSet、…諸若此類。其方法基本和ChartData一樣,所以也不多BB。
具體代碼以及更多實現請跳轉至我的原創博客:MPAndroidChart的詳細使用——DataSet類以及DataSet子類

ViewPortHandler(視圖控制器)

ViewPortHandler類負責處理圖表的視圖端口。這意味着它負責圖表視圖中可見的內容,它在平移和縮放級別、圖表的大小以及繪圖區域和當前偏移量方面都是當前狀態。這個ViewPortHandler允許直接訪問上述所有屬性並修改它們。建議:這方面的設置最好是有一定水平且熟悉API的人來進行操作,否則可能會出現很多意外錯誤。
具體代碼以及更多實現請跳轉至我的原創博客:MPAndroidChart的詳細使用——ViewPortHandler(視圖控制器)

FillFormat接口

FillFormatter接口允許自定義LineDataSet的數據應在何處不進行繪製(也就是跳過)。只需要創建一個類並實現FillFormatter接口來使用。很簡單,寫一個類實現FillFormat接口,然後DataSet對象調用.setFillFormatter()方法傳入參數即可實現。
具體代碼以及更多實現請跳轉至我的原創博客:MPAndroidChart的詳細使用——FillFormat接口

很有用的雜項設置

這部分是官方歸類爲雜項的一些方法,比如:清除圖表數據、以及一些獲取圖表的信息的方法、還有把圖表保存成圖片存放在手機的圖庫等等…!有一些都是實際開發經常需要使用的方法,所以也很重要!比如clear()清除圖表中所有的數據,比如isEmpty()判斷圖表數據對象是否爲空,再比如saveToGallery(String title)將當前圖表作爲圖像保存到圖庫(需權限)。
具體代碼以及更多實現請跳轉至我的原創博客:MPAndroidChart的詳細使用——雜類(很有用)

最後獻上一大波效果圖

折線圖的
在這裏插入圖片描述
條形圖的
在這裏插入圖片描述
餅圖的
在這裏插入圖片描述
雷達圖、氣泡圖、散點圖、、蠟燭圖、組合圖的
在這裏插入圖片描述
第一篇破萬字的博客,如果屏幕前的你覺得寫得還不是太爛。。。點個贊鼓勵一下下唄~| 點個贊再走!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章