Android使用自定義View實(shí)現(xiàn)餅狀圖的實(shí)例代碼
本文講述了Android使用自定義View實(shí)現(xiàn)餅狀圖的實(shí)例代碼。分享給大家供大家參考,具體如下:
1.效果圖
2.代碼實(shí)現(xiàn)
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(); //觸發(fā)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}; //右側(cè)的圖的數(shù)據(jù),{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使用自定義View實(shí)現(xiàn)餅狀圖的實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Android實(shí)現(xiàn)懸浮窗的簡(jiǎn)單方法實(shí)例
相信大家應(yīng)該也都發(fā)現(xiàn)了,現(xiàn)在很多應(yīng)用都使用到懸浮窗,例如微信在視頻的時(shí)候,點(diǎn)擊Home鍵,視頻小窗口仍然會(huì)在屏幕上顯示,下面這篇文章主要給大家介紹了關(guān)于Android實(shí)現(xiàn)懸浮窗的簡(jiǎn)單方法,需要的朋友可以參考下2021-09-09Android實(shí)現(xiàn)捕獲未知異常并提交給服務(wù)器的方法
這篇文章主要介紹了Android實(shí)現(xiàn)捕獲未知異常并提交給服務(wù)器的方法,涉及Android的異常與錯(cuò)誤處理機(jī)制相關(guān)操作技巧,需要的朋友可以參考下2016-08-08Android實(shí)現(xiàn)繪制LocationMarkerView圖的示例代碼
LocationMarker是運(yùn)動(dòng)軌跡上Start、End, 以及整公里點(diǎn)上筆者自定義繪制的一個(gè)MarkerView。這篇文章主要介紹了Android實(shí)現(xiàn)繪制LocationMarkerView圖的示例代碼,希望對(duì)大家有所幫助2023-02-02Android編程操作聯(lián)系人的方法(查詢,獲取,添加等)
這篇文章主要介紹了Android編程操作聯(lián)系人的方法,包括針對(duì)聯(lián)系人的查詢,獲取,添加等操作,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-01-01Android中使用achartengine生成圖表的具體方法
這篇文章主要介紹了Android中使用achartengine生成圖表的具體方法,有需要的朋友可以參考一下2014-01-01詳細(xì)介紹Android-Room數(shù)據(jù)庫(kù)的使用
這篇文章主要介紹了詳細(xì)介紹Android-Room數(shù)據(jù)庫(kù)的使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03Android實(shí)現(xiàn)瘋狂連連看游戲之游戲效果預(yù)覽(一)
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)瘋狂連連看游戲之游戲的效果預(yù)覽,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03Android中實(shí)現(xiàn)開機(jī)自動(dòng)啟動(dòng)服務(wù)(service)實(shí)例
這篇文章主要介紹了Android中實(shí)現(xiàn)自動(dòng)啟動(dòng)服務(wù)實(shí)例,并開機(jī)自動(dòng)啟用(無(wú)activity),的朋友可以參考下2014-06-06