android 开源图表动画,Android 图表开发开源库MPAndroidChart-Go语言中文社区
上面是APP中實(shí)現(xiàn)的效果圖(點(diǎn)擊可以放大查看)
圖1的效果不是用這個(gè)實(shí)現(xiàn)的,如果感興趣可以參考我這篇文章 ?Android漸變圓環(huán)
總體來說,MPAndroidChart可能是目前Android 開發(fā)最好用的一個(gè)三方庫(kù)了,功能非常強(qiáng)大,集成簡(jiǎn)單。
直接導(dǎo)入作為依賴就可以。
常用的效果(柱狀圖(橫向,豎向),線狀圖(多種效果),餅狀圖,點(diǎn)狀圖都包括),屬性也很簡(jiǎn)單,我們使用的時(shí)候只需要熟悉控件的各種屬性即可。
開源庫(kù)的核心功能:支持x,y軸縮放
支持拖拽
支持手指滑動(dòng)
支持高亮顯示
支持保存圖表到文件中
支持從文件(txt)中讀取數(shù)據(jù)
預(yù)先定義顏色模板
自動(dòng)生成標(biāo)注
支持自定義x,y軸的顯示標(biāo)簽
支持x,y軸動(dòng)畫
支持x,y軸設(shè)置最大值和附加信息
支持自定義字體,顏色,背景,手勢(shì),虛線等
以 柱狀圖舉列使用:
xml中直接定義
Activity中 初始化
protectedTypeface mTfLight;mTfLight= Typeface.createFromAsset(getActivity().getAssets(),"OpenSans-Light.ttf");//字體mChartPmOne= (BarChart) view.findViewById(R.id.chart_pm_one);BarData data = generateData(3);//生成數(shù)據(jù)//設(shè)置字體及顏色data.setValueTypeface(mTfLight);data.setValueTextColor(Color.BLACK);//設(shè)置mChartPmOne.getDescription().setEnabled(false);mChartPmOne.setDrawGridBackground(false);mChartPmOne.setGridBackgroundColor(Color.WHITE);XAxis xAxis = mChartPmOne.getXAxis();xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);xAxis.setTypeface(mTfLight);xAxis.setDrawGridLines(false);xAxis.setTextColor(Color.WHITE);xAxis.setValueFormatter(newIAxisValueFormatter() {
privateSimpleDateFormat mFormat= newSimpleDateFormat("HH:mm");@OverridepublicString getFormattedValue(floatvalue,AxisBase axis) {
longmillis = TimeUnit.HOURS.toMillis((long) value);returnmFormat.format(newDate(millis));}
});YAxis leftAxis = mChartPmOne.getAxisLeft();leftAxis.setTypeface(mTfLight);leftAxis.setTextColor(Color.WHITE);leftAxis.setLabelCount(5, false);leftAxis.setSpaceTop(15f);YAxis rightAxis = mChartPmOne.getAxisRight();rightAxis.setEnabled(false);mChartPmOne.setData(data);Legend l = mChartPmOne.getLegend();mChartPmOne.getLegend().setEnabled(false);mChartPmOne.setFitBars(true);mChartPmOne.animateY(700);privateBarData generateData(intcnt) {
intstate=0;ArrayList entries = newArrayList();for(inti = 0;i < 24;i++) {
state = i;BarEntry barEntry = newBarEntry(i,(float) (Math.random() * 300) + 0,state);entries.add(barEntry);}
BarDataSet d = newBarDataSet(entries,"New DataSet "+ cnt);// d.setColor(getResources().getColor(R.color.color_environment_excellent));int[] VORDIPLOM_COLORS = {getResources().getColor(R.color.color_environment_severe),getResources().getColor(R.color.color_environment_serious),getResources().getColor(R.color.color_environment_excellent),getResources().getColor(R.color.color_environment_good),getResources().getColor(R.color.color_environment_mild),getResources().getColor(R.color.color_environment_moderate)};d.setColors(VORDIPLOM_COLORS);d.setBarShadowColor(Color.rgb(203,203,203));ArrayList sets = newArrayList();sets.add(d);BarData cd = newBarData(sets);cd.setBarWidth(0.9f);returncd;}
圖表包含 ?X軸(橫軸)getAxis , ?Y軸(左軸,豎軸)getAsixLeft, ?右軸getAxisRight
插入一點(diǎn):Y軸的最大值,最小值范圍是可以手動(dòng)設(shè)定的,如果沒有手動(dòng)設(shè)定Y軸會(huì)自動(dòng)取傳進(jìn)數(shù)據(jù)的 最大值作為最大值,最小值作為最小值。
leftAxis.setAxisMaximum(200);leftAxis.setAxisMinimum(0);
通過獲取相應(yīng)的軸對(duì)象 設(shè)置 這幾個(gè)軸對(duì)應(yīng)相應(yīng)的屬性(字體,顏色,標(biāo)簽,線寬,網(wǎng)格線等等)
整理了一下 圖表中常用的一些方法
動(dòng)畫:
所有的圖表類型都支持下面三種動(dòng)畫,分別是x方向,y方向,xy方向。
?animateX(int durationMillis): x軸方向
?animateY(int durationMillis): y軸方向
?animateXY(int xDuration, int yDuration): xy軸方向XY軸的繪制
setEnabled(boolean enabled):設(shè)置軸是否被繪制。默認(rèn)繪制,false不會(huì)被繪制。
setDrawLabels(boolean enabled):設(shè)置為true打開繪制軸的標(biāo)簽。
setDrawAxisLine(boolean enabled): 設(shè)置為true,繪制軸線
setDrawGridLines(boolean enabled): 設(shè)置為true繪制網(wǎng)格線。定義軸線樣式
setTextColor(int color): 設(shè)置軸標(biāo)簽文本顏色。
setTextSize(float size):設(shè)置軸標(biāo)簽的字體大小。
setTypeface(Typeface tf):設(shè)置軸標(biāo)簽的自定義Typeface(Typeface.createFromAsset(getAssets(), "字體文件名");)
setGridColor(int color): 設(shè)置網(wǎng)格線顏色。
setGridLineWidth(float width):設(shè)置網(wǎng)格線寬度。
setAxisLineColor(int color):設(shè)置此軸的坐標(biāo)軸的顏色。
setAxisLineWidth(float width): 設(shè)置此軸的坐標(biāo)軸的寬度。
setVisibleXRangeMaximum(float maxXRange):設(shè)置x軸最多顯示數(shù)據(jù)條數(shù),(要在設(shè)置數(shù)據(jù)源后調(diào)用,否則是無效的)
enableGridDashedLine(float lineLength, float spaceLength, float phase): 顯示網(wǎng)格線虛線模式,"lineLength"控制短線條的長(zhǎng)度,"spaceLength"控制兩段線之間的間隔長(zhǎng)度,"phase"控制開始的點(diǎn)。
圖表交互設(shè)置
setTouchEnabled(boolean enabled): 允許你打開或者關(guān)閉與圖表的所有觸摸交互的情況。設(shè)置是否可以觸摸,如為false,則不能拖動(dòng),縮放等
setDragEnabled(boolean enabled): 打開或關(guān)閉對(duì)圖表的拖動(dòng)。
setScaleEnabled(boolean enabled):打開或關(guān)閉對(duì)圖表所有軸的的縮放。
setScaleXEnabled(boolean enabled): 打開或關(guān)閉x軸的縮放
setScaleYEnabled(boolean enabled): 打開或關(guān)閉y軸的縮放。
setPinchZoom(boolean enabled): 如果設(shè)置為true,擠壓縮放被打開。如果設(shè)置為false,x和y軸可以被單獨(dú)擠壓縮放。
setHighlightEnabled(boolean enabled): 如果設(shè)置為true,在圖表中選中觸屏高亮。
setHighlightPerDragEnabled(boolean enabled): 設(shè)置為true時(shí)允許高亮顯示拖動(dòng)結(jié)束的對(duì)象在縮放到最下時(shí)。默認(rèn):true
setHighlightIndicatorEnabled(boolean enabled): 如果設(shè)置為true, 指標(biāo)線(或桿)將展示被選擇的線的繪制的值。
自定義軸線的值
setAdjustXLabels(boolean enabled):如果被設(shè)置為true,x軸條目將依賴于它自己在進(jìn)行縮放的時(shí)候。如果設(shè)置為false,x軸條目將總是保持相同。
setAvoidFirstLastClipping(boolean enabled):如果設(shè)置為true,圖表將避免第一個(gè)和最后一個(gè)標(biāo)簽條目被減掉在圖表或屏幕的邊緣。
setSpaceBetweenLabels(int characters): 設(shè)置x軸標(biāo)簽之間的空間字符數(shù),默認(rèn)是4個(gè)。
setPosition(XAxisPosition pos):設(shè)置XAxis應(yīng)該出現(xiàn)的位置。可以選擇TOP,BOTTOM,BOTH_SIDED,TOP_INSIDE或者BOTTOM_INSIDE。
setDescription(String desc): 設(shè)置表格的描述
? setDrawYValues(boolean enabled): 設(shè)置是否顯示y軸的值的數(shù)據(jù)
?setValuePaintColor(int color):設(shè)置表格中y軸的值的顏色,但是必須設(shè)置setDrawYValues(true)
? setValueTypeface(Typeface t):設(shè)置字體
? setValueFormatter(DecimalFormat format): 設(shè)置顯示的格式
? setPaint(Paint p, int which): 自定義筆刷
?public ChartData getDataCurrent():返回ChartData對(duì)象當(dāng)前顯示的圖表。它包含了所有信息的顯示值最小和最大值等setStartAtZero(boolean enabled):如果這個(gè)打開,軸線總是有最小值0,無論什么類型的圖表被展示。
setAxisMaxValue(float max):設(shè)置一個(gè)自定義的最大值為這條軸,如果設(shè)置了,這個(gè)值將不會(huì)依賴于提供的數(shù)據(jù)自動(dòng)計(jì)算。
resetAxisMaxValue(): 調(diào)用這個(gè)將撤銷以前設(shè)置的最大值。這意味著,你將再次允許軸自動(dòng)計(jì)算它的最大值。
setAxisMinValue(float min): 設(shè)置一個(gè)自定義的最小值。如果設(shè)置了,這個(gè)值將不會(huì)依賴于你提供的數(shù)據(jù)進(jìn)行自動(dòng)計(jì)算。
resetAxisMinValue():調(diào)用這個(gè)方法撤銷以前設(shè)置的最小值。這意味著,你將再次允許軸自動(dòng)計(jì)算他的最小值。
setInverted(boolean enabled): 如果設(shè)置為true,這個(gè)軸將被反向,那意味著最高出的將到底部,最低部的到頂端。
setSpaceTop(float percent):設(shè)置在圖表上最高處的值相比軸上最高值的頂端空間(總軸范圍的百分比)
setSpaceBottom(float percent): 設(shè)置在圖表上最低處的值相比軸上最低處值的底部空間(總軸范圍的百分比)
setShowOnlyMinMax(boolean enabled): 如果打開了,這個(gè)軸將展示出它的最小值和最大值。這將忽略或者覆蓋定義過的label-count。
setPosition(YAxisLabelPosition pos):設(shè)置軸標(biāo)簽應(yīng)該被繪制的位置。INSIDE_CHART或者OUTSIDE_CHART中的一個(gè)。 自定義影響軸的數(shù)值范圍應(yīng)該在圖表被設(shè)置數(shù)據(jù)之前應(yīng)用。
?public float getYChartMin(): 返回當(dāng)前最小值
?public float getYChartMax(): 返回當(dāng)前最大值
?public float getAverage(): 返回所有值的平均值。
?public float getAverage(int type): 返回平均值
?public PointF getCenter(): 返回中間點(diǎn)
?public Paint getPaint(int which): 得到筆刷
?setDragScaleEnabled(boolean enabled): 設(shè)置是否可以拖拽,縮放
?setOnChartValueSelectedListener(OnChartValueSelectedListener l): 設(shè)置表格上的點(diǎn),被點(diǎn)擊的時(shí)候,的回調(diào)函數(shù)
?public void highlightValues(Highlight[] highs): 設(shè)置高亮顯示
?saveToGallery(String title): 保存圖表到圖庫(kù)中
?saveToPath(String title, String pathOnSD): 保存.
?setScaleMinima(float x, float y): 設(shè)置最小的縮放
?centerViewPort(int xIndex, float val): 設(shè)置視口
?fitScreen(): 適應(yīng)屏幕
希望可以幫助到大家,如果大家還有其他問題,可以加入我的qq群討論交流。
偶然發(fā)現(xiàn)一個(gè)大神總結(jié)的:https://blog.csdn.net/u014136472/article/details/50273309 非常詳細(xì)
開發(fā)一群:454430053開發(fā)二群:537532956
總結(jié)
以上是生活随笔為你收集整理的android 开源图表动画,Android 图表开发开源库MPAndroidChart-Go语言中文社区的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 认证服务器的搭建_OAuth2.0分布式
- 下一篇: android sina oauth2.