日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

android 开源图表动画,Android 图表开发开源库MPAndroidChart-Go语言中文社区

發(fā)布時(shí)間:2025/3/12 Android 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 开源图表动画,Android 图表开发开源库MPAndroidChart-Go语言中文社区 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

上面是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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。