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); //畫(huà)弧
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程序開(kāi)發(fā)之給背景圖加上移動(dòng)的手勢(shì)
這篇文章主要介紹了Android程序開(kāi)發(fā)之給背景圖加上移動(dòng)的手勢(shì) 的相關(guān)資料,需要的朋友可以參考下2016-03-03
超實(shí)用的Android手勢(shì)鎖制作實(shí)例教程
這篇文章主要介紹了一個(gè)超實(shí)用的Android手勢(shì)鎖制作實(shí)例教程,普通的圓環(huán)形圖標(biāo)變換,在App和系統(tǒng)的鎖屏界面中都可以調(diào)用,需要的朋友可以參考下2016-04-04
Android EasyBarrage實(shí)現(xiàn)輕量級(jí)彈幕效果
本篇文章主要介紹了Android EasyBarrage實(shí)現(xiàn)輕量級(jí)彈幕效果,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08
Android自定義可拖拽的懸浮按鈕DragFloatingActionButton
這篇文章主要介紹了Android自定義可拖拽的懸浮按鈕DragFloatingActionButton,需要的朋友可以參考下2017-06-06
Android自定義View仿大眾點(diǎn)評(píng)星星評(píng)分控件
這篇文章主要為大家詳細(xì)介紹了Android自定義View仿大眾點(diǎn)評(píng)星星評(píng)分控件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-03-03
Android實(shí)現(xiàn)多級(jí)列表中的新建功能
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)多級(jí)列表中的新建功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06

