真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android優(yōu)秀圖標庫MPAndroidChart之柱狀圖(適應百分之八十項目需求)

前言

在項目當中很多時候要對數(shù)據(jù)進行分析就要用到圖表,在gitHub上有很多優(yōu)秀的圖表開源庫,今天給大家分享的就是MPAndroidChart中的柱狀圖。簡單介紹一下MPAndroidChart:他可以實現(xiàn)圖表的拖動,3D,局部查看,數(shù)據(jù)動態(tài)展示等功能。

創(chuàng)新互聯(lián)是網(wǎng)站建設技術企業(yè),為成都企業(yè)提供專業(yè)的成都網(wǎng)站制作、成都做網(wǎng)站,網(wǎng)站設計,網(wǎng)站制作,網(wǎng)站改版等技術服務。擁有十多年豐富建站經(jīng)驗和眾多成功案例,為您定制適合企業(yè)的網(wǎng)站。十多年品質,值得信賴!

官方源碼地址:github.com/PhilJay/MPA…

廢話就不多說了,先給看大家看看效果圖

Android 優(yōu)秀圖標庫MPAndroidChart之柱狀圖(適應百分之八十項目需求)

Android 優(yōu)秀圖標庫MPAndroidChart之柱狀圖(適應百分之八十項目需求)

Android 優(yōu)秀圖標庫MPAndroidChart之柱狀圖(適應百分之八十項目需求)

操作步驟

第一步:需要將依賴的庫添加到你的項目中

implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0-alpha'
implementation 'com.google.android.material:material:1.0.0'

第二步:xml中

???

第三步:ValueFormatter.java

??/**
?*?Class?to?format?all?values?before?they?are?drawn?as?labels.
?*/
?public?abstract?class?ValueFormatter?implements?IAxisValueFormatter,?IValueFormatter?{/**
?*?DO?NOT?USE,?only?for?backwards?compatibility?and?will?be?removed?in?future?versions.
?*
?*?@param?value?the?value?to?be?formatted
?*?@param?axis??the?axis?the?value?belongs?to
?*?@return?formatted?string?label
?*/@Override@Deprecatedpublic?String?getFormattedValue(float?value,?AxisBase?axis)?{????return?getFormattedValue(value);
}/**
?*?DO?NOT?USE,?only?for?backwards?compatibility?and?will?be?removed?in?future?versions.
?*?@param?value???????????the?value?to?be?formatted
?*?@param?entry???????????the?entry?the?value?belongs?to?-?in?e.g.?BarChart,?this?is?of?class?BarEntry
?*?@param?dataSetIndex????the?index?of?the?DataSet?the?entry?in?focus?belongs?to
?*?@param?viewPortHandler?provides?information?about?the?current?chart?state?(scale,?translation,?...)
?*?@return?formatted?string?label
?*/@Override@Deprecatedpublic?String?getFormattedValue(float?value,?Entry?entry,?int?dataSetIndex,?ViewPortHandler?viewPortHandler)?{????return?getFormattedValue(value);
}/**
?*?Called?when?drawing?any?label,?used?to?change?numbers?into?formatted?strings.
?*
?*?@param?value?float?to?be?formatted
?*?@return?formatted?string?label
?*/public?String?getFormattedValue(float?value)?{????return?String.valueOf(value);
}/**
?*?Used?to?draw?axis?labels,?calls?{@link?#getFormattedValue(float)}?by?default.
?*
?*?@param?value?float?to?be?formatted
?*?@param?axis??axis?being?labeled
?*?@return?formatted?string?label
?*/public?String?getAxisLabel(float?value,?AxisBase?axis)?{????return?getFormattedValue(value);
}/**
?*?Used?to?draw?bar?labels,?calls?{@link?#getFormattedValue(float)}?by?default.
?*
?*?@param?barEntry?bar?being?labeled
?*?@return?formatted?string?label
?*/public?String?getBarLabel(BarEntry?barEntry)?{????return?getFormattedValue(barEntry.getY());
}/**
?*?Used?to?draw?stacked?bar?labels,?calls?{@link?#getFormattedValue(float)}?by?default.
?*
?*?@param?value????????current?value?to?be?formatted
?*?@param?stackedEntry?stacked?entry?being?labeled,?contains?all?Y?values
?*?@return?formatted?string?label
?*/public?String?getBarStackedLabel(float?value,?BarEntry?stackedEntry)?{????return?getFormattedValue(value);
}/**
?*?Used?to?draw?line?and?scatter?labels,?calls?{@link?#getFormattedValue(float)}?by?default.
?*
?*?@param?entry?point?being?labeled,?contains?X?value
?*?@return?formatted?string?label
?*/public?String?getPointLabel(Entry?entry)?{????return?getFormattedValue(entry.getY());
}/**
?*?Used?to?draw?pie?value?labels,?calls?{@link?#getFormattedValue(float)}?by?default.
?*
?*?@param?value????float?to?be?formatted,?may?have?been?converted?to?percentage
?*?@param?pieEntry?slice?being?labeled,?contains?original,?non-percentage?Y?value
?*?@return?formatted?string?label
?*/public?String?getPieLabel(float?value,?PieEntry?pieEntry)?{????return?getFormattedValue(value);
}/**
?*?Used?to?draw?radar?value?labels,?calls?{@link?#getFormattedValue(float)}?by?default.
?*
?*?@param?radarEntry?entry?being?labeled
?*?@return?formatted?string?label
?*/public?String?getRadarLabel(RadarEntry?radarEntry)?{????return?getFormattedValue(radarEntry.getY());
}/**
?*?Used?to?draw?bubble?size?labels,?calls?{@link?#getFormattedValue(float)}?by?default.
?*
?*?@param?bubbleEntry?bubble?being?labeled,?also?contains?X?and?Y?values
?*?@return?formatted?string?label
?*/public?String?getBubbleLabel(BubbleEntry?bubbleEntry)?{????return?getFormattedValue(bubbleEntry.getSize());
}/**
?*?Used?to?draw?high?labels,?calls?{@link?#getFormattedValue(float)}?by?default.
?*
?*?@param?candleEntry?candlestick?being?labeled
?*?@return?formatted?string?label
?*/public?String?getCandleLabel(CandleEntry?candleEntry)?{????return?getFormattedValue(candleEntry.getHigh());
}

}

第四步:MyValueFormatter

????public?class?MyValueFormatter?extends?ValueFormatter{private?final?DecimalFormat?mFormat;private?String?suffix;public?MyValueFormatter(String?suffix)?{
????mFormat?=?new?DecimalFormat("0000");????this.suffix?=?suffix;
}@Overridepublic?String?getFormattedValue(float?value)?{????return?mFormat.format(value)?+?suffix;
}@Overridepublic?String?getAxisLabel(float?value,?AxisBase?axis)?{????if?(axis?instanceof?XAxis)?{????????return?mFormat.format(value);
????}?else?if?(value?>?0)?{????????return?mFormat.format(value)?+?suffix;
????}?else?{????????return?mFormat.format(value);
????}
}
}
復制代碼

第五步:MainAcyivity

??package?detongs.hbqianze.him.linechart;??import?android.os.Bundle;??import?android.util.Log;??import?android.view.WindowManager;??import?android.widget.TextView;??import?androidx.appcompat.app.AppCompatActivity;??import?com.github.mikephil.charting.charts.BarChart;??import?com.github.mikephil.charting.components.XAxis;??import?com.github.mikephil.charting.components.YAxis;??import?com.github.mikephil.charting.data.BarData;??import?com.github.mikephil.charting.data.BarDataSet;??import?com.github.mikephil.charting.data.BarEntry;??import?com.github.mikephil.charting.interfaces.datasets.IBarDataSet;??import??com.github.mikephil.charting.interfaces.datasets.IDataSet;??import?com.github.mikephil.charting.utils.ColorTemplate;??import?java.util.ArrayList;??import?detongs.hbqianze.him.linechart.chart.MyValueFormatter;??import?detongs.hbqianze.him.linechart.chart.ValueFormatter;??public?class?MainActivity?extends?AppCompatActivity?{private?BarChart?chart;private?TextView?te_cache;@Overrideprotected?void?onCreate(Bundle?savedInstanceState)?{????super.onCreate(savedInstanceState);
????getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
????????????WindowManager.LayoutParams.FLAG_FULLSCREEN);
????setContentView(R.layout.activity_main);

????chart?=?findViewById(R.id.chart1);
????te_cache?=?findViewById(R.id.te_cache);

????chart.getDescription().setEnabled(false);????//設置最大值條目,超出之后不會有值
????chart.setMaxVisibleValueCount(60);????//分別在x軸和y軸上進行縮放
????chart.setPinchZoom(true);????//設置剩余統(tǒng)計圖的陰影
????chart.setDrawBarShadow(false);????//設置網(wǎng)格布局
????chart.setDrawGridBackground(true);????//通過自定義一個x軸標簽來實現(xiàn)2,015?有分割符符bug
????ValueFormatter?custom?=?new?MyValueFormatter("?");????//獲取x軸線
????XAxis?xAxis?=?chart.getXAxis();????//設置x軸的顯示位置
????xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);????//設置網(wǎng)格布局
????xAxis.setDrawGridLines(true);????//圖表將避免第一個和最后一個標簽條目被減掉在圖表或屏幕的邊緣
????xAxis.setAvoidFirstLastClipping(false);????//繪制標簽??指x軸上的對應數(shù)值?默認true
????xAxis.setDrawLabels(true);
????xAxis.setValueFormatter(custom);????//縮放后x?軸數(shù)據(jù)重疊問題
????xAxis.setGranularityEnabled(true);????//獲取右邊y標簽
????YAxis?axisRight?=?chart.getAxisRight();
????axisRight.setStartAtZero(true);????//獲取左邊y軸的標簽
????YAxis?axisLeft?=?chart.getAxisLeft();????//設置Y軸數(shù)值?從零開始
????axisLeft.setStartAtZero(true);

????chart.getAxisLeft().setDrawGridLines(false);????//設置動畫時間
?????chart.animateXY(600,600);

?????chart.getLegend().setEnabled(true);

????getData();????//設置柱形統(tǒng)計圖上的值
????chart.getData().setValueTextSize(10);????for?(IDataSet?set?:?chart.getData().getDataSets()){
????????set.setDrawValues(!set.isDrawValuesEnabled());
????}

}public?void?getData(){
ArrayList?values?=?new?ArrayList<>();
????Float?aFloat?=?Float.valueOf("2015");
????Log.v("xue","aFloat+++++"+aFloat);
????BarEntry?barEntry?=?new?BarEntry(aFloat,Float.valueOf("100"));
BarEntry?barEntry1?=?new?BarEntry(Float.valueOf("2016"),Float.valueOf("210"));
BarEntry?barEntry2?=?new?BarEntry(Float.valueOf("2017"),Float.valueOf("300"));
BarEntry?barEntry3?=?new?BarEntry(Float.valueOf("2018"),Float.valueOf("450"));
BarEntry?barEntry4?=?new?BarEntry(Float.valueOf("2019"),Float.valueOf("300"));
????BarEntry?barEntry5?=?new?BarEntry(Float.valueOf("2020"),Float.valueOf("650"));
????BarEntry?barEntry6?=?new?BarEntry(Float.valueOf("2021"),Float.valueOf("740"));
values.add(barEntry);
values.add(barEntry1);
values.add(barEntry2);
values.add(barEntry3);
values.add(barEntry4);
values.add(barEntry5);
????values.add(barEntry6);
BarDataSet?set1;if?(chart.getData()?!=?null?&&
????????chart.getData().getDataSetCount()?>?0)?{
????set1?=?(BarDataSet)?chart.getData().getDataSetByIndex(0);
????set1.setValues(values);
????chart.getData().notifyDataChanged();
????chart.notifyDataSetChanged();
}?else?{
????set1?=?new?BarDataSet(values,?"點折水");
????set1.setColors(ColorTemplate.VORDIPLOM_COLORS);
????set1.setDrawValues(false);

????ArrayList?dataSets?=?new?ArrayList<>();
????dataSets.add(set1);

????BarData?data?=?new?BarData(dataSets);
????chart.setData(data);

????chart.setFitBars(true);
}????//繪制圖表chart.invalidate();

}

}

最后

文章寫到這里就結束了,如果你覺得文章寫得不錯就給個關注唄?你的支持是我最大的動力!如果還有想了解MPAndroidChart其他屬性的小伙伴也可以給我留言。

Android 優(yōu)秀圖標庫MPAndroidChart之柱狀圖(適應百分之八十項目需求)


文章題目:Android優(yōu)秀圖標庫MPAndroidChart之柱狀圖(適應百分之八十項目需求)
文章URL:http://weahome.cn/article/psedid.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部