您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何在Android使用自定義View實現餅狀圖,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
1.效果圖
2.代碼實現
public class PieChartView extends View { private Paint mPaint; private List<PieData>pieDataList; // 餅狀圖初始繪制角度 private float mStartAngle = 0; public PieChartView(Context context) { this(context, null); } public PieChartView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); init(); } public void setData(List<PieData> dataList){ if (null == dataList || dataList.size() == 0) return; pieDataList = dataList; invalidate(); //觸發onDraw } private void init() { mPaint = new Paint(); mPaint.setAntiAlias(true); mPaint.setStyle(Paint.Style.FILL); mPaint.setStrokeWidth(4); rectF = new RectF(100f, 100f, 600f, 600f); //正方形背景 } private RectF rectF; @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); if (null == pieDataList || pieDataList.size() == 0) return; float currentAngle = mStartAngle; for (int i = 0;i<pieDataList.size();i++){ PieData pieData = pieDataList.get(i); mPaint.setColor(pieData.color); canvas.drawArc(rectF,currentAngle,pieData.angle,true,mPaint); //畫弧 currentAngle += pieData.angle; } } }
3.使用:
int values[] = {30, 30, 40}; //右側的圖的數據,{10, 20, 70} 圖左 List<PieData> pieDataList = new ArrayList<>(); PieData pieData1 = new PieData(); pieData1.percentage = (float) values[0] / 100; pieData1.angle = pieData1.percentage * 360; pieData1.color = Color.RED; pieDataList.add(pieData1); PieData pieData2 = new PieData(); pieData2.percentage = (float) values[1] / 100; pieData2.angle = pieData2.percentage * 360; pieData2.color = Color.GREEN; pieDataList.add(pieData2); PieData pieData3 = new PieData(); pieData3.percentage = (float) values[2] / 100; pieData3.angle = pieData3.percentage * 360; pieData3.color = Color.YELLOW; pieDataList.add(pieData3); PieChartView pieChartView = new PieChartView(mContext); pieChartView.setData(pieDataList); addView(pieChartView);
Android是一種基于Linux內核的自由及開放源代碼的操作系統,主要使用于移動設備,如智能手機和平板電腦,由美國Google公司和開放手機聯盟領導及開發。
上述內容就是如何在Android使用自定義View實現餅狀圖,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。