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ì)大家有所幫助,如果大家有任何疑問請(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-09
Android實(shí)現(xiàn)捕獲未知異常并提交給服務(wù)器的方法
這篇文章主要介紹了Android實(shí)現(xiàn)捕獲未知異常并提交給服務(wù)器的方法,涉及Android的異常與錯(cuò)誤處理機(jī)制相關(guān)操作技巧,需要的朋友可以參考下2016-08-08
Android實(shí)現(xiàn)繪制LocationMarkerView圖的示例代碼
LocationMarker是運(yùn)動(dòng)軌跡上Start、End, 以及整公里點(diǎn)上筆者自定義繪制的一個(gè)MarkerView。這篇文章主要介紹了Android實(shí)現(xiàn)繪制LocationMarkerView圖的示例代碼,希望對(duì)大家有所幫助2023-02-02
Android編程操作聯(lián)系人的方法(查詢,獲取,添加等)
這篇文章主要介紹了Android編程操作聯(lián)系人的方法,包括針對(duì)聯(lián)系人的查詢,獲取,添加等操作,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-01-01
Android中使用achartengine生成圖表的具體方法
這篇文章主要介紹了Android中使用achartengine生成圖表的具體方法,有需要的朋友可以參考一下2014-01-01
詳細(xì)介紹Android-Room數(shù)據(jù)庫的使用
這篇文章主要介紹了詳細(xì)介紹Android-Room數(shù)據(jù)庫的使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-03-03
Android實(shí)現(xiàn)瘋狂連連看游戲之游戲效果預(yù)覽(一)
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)瘋狂連連看游戲之游戲的效果預(yù)覽,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
Android中實(shí)現(xiàn)開機(jī)自動(dòng)啟動(dòng)服務(wù)(service)實(shí)例
這篇文章主要介紹了Android中實(shí)現(xiàn)自動(dòng)啟動(dòng)服務(wù)實(shí)例,并開機(jī)自動(dòng)啟用(無activity),的朋友可以參考下2014-06-06

