要实现一个Android饼图中间带有图标的柱状图,可以使用第三方库MPAndroidChart。下面是一个使用MPAndroidChart库的示例代码:
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
import android.graphics.Typeface;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import com.github.mikephil.charting.charts.HorizontalBarChart;
import com.github.mikephil.charting.charts.PieChart;
import com.github.mikephil.charting.components.Description;
import com.github.mikephil.charting.components.Legend;
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.data.PieData;
import com.github.mikephil.charting.data.PieDataSet;
import com.github.mikephil.charting.data.PieEntry;
import com.github.mikephil.charting.formatter.PercentFormatter;
import com.github.mikephil.charting.utils.ColorTemplate;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private PieChart pieChart;
private HorizontalBarChart barChart;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pieChart = findViewById(R.id.pieChart);
barChart = findViewById(R.id.barChart);
// 设置饼图数据
List pieEntries = new ArrayList<>();
pieEntries.add(new PieEntry(40f, "Category 1"));
pieEntries.add(new PieEntry(30f, "Category 2"));
pieEntries.add(new PieEntry(20f, "Category 3"));
pieEntries.add(new PieEntry(10f, "Category 4"));
PieDataSet pieDataSet = new PieDataSet(pieEntries, "Pie Chart");
pieDataSet.setColors(ColorTemplate.COLORFUL_COLORS);
pieDataSet.setValueTextSize(12f);
pieDataSet.setValueFormatter(new PercentFormatter());
PieData pieData = new PieData(pieDataSet);
pieChart.setData(pieData);
pieChart.setUsePercentValues(true);
pieChart.setDrawHoleEnabled(false);
pieChart.setCenterText("Pie Chart");
pieChart.setCenterTextSize(18f);
pieChart.animateY(1000);
pieChart.getDescription().setEnabled(false);
// 设置柱状图数据
List barEntries = new ArrayList<>();
barEntries.add(new BarEntry(40f, 0));
barEntries.add(new BarEntry(30f, 1));
barEntries.add(new BarEntry(20f, 2));
barEntries.add(new BarEntry(10f, 3));
BarDataSet barDataSet = new BarDataSet(barEntries, "Bar Chart");
barDataSet.setColors(ColorTemplate.COLORFUL_COLORS);
barDataSet.setValueTextSize(12f);
BarData barData = new BarData(barDataSet);
barChart.setData(barData);
barChart.getXAxis().setEnabled(false);
barChart.getAxisRight().setEnabled(false);
barChart.getAxisLeft().setEnabled(false);
barChart.getLegend().setEnabled(false);
barChart.getDescription().setEnabled(false);
barChart.animateY(1000);
}
}
这样,你就可以在Android应用中实现一个带有图标的饼图和柱状图了。你可以根据自己的需求调整图表的样式和数据。