一個簡單的自定義view餅狀圖,加入了動畫效果
站在用戶的角度思考問題,與客戶深入溝通,找到夏河網(wǎng)站設(shè)計與夏河網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站設(shè)計、成都網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名申請、虛擬主機(jī)、企業(yè)郵箱。業(yè)務(wù)覆蓋夏河地區(qū)。
先看一下效果

下面就直接上代碼了
public class Yidong2 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new PointView(this));
}
public class PointView extends View {
private int[] p1 = {0, 100, 200}; //存放弧度的數(shù)組
//定義存放顏色的數(shù)組
private int[] p2 = {Color.GREEN, Color.YELLOW, Color.RED};
Paint paint = new Paint(); //畫筆
private float k; //弧度變動后的值
//定義矩形,用戶確定描繪的餅狀圖位置
private final RectF rectF = new RectF(100, 100, 800, 800);
//定義
public PointView(Context context) {
super(context);
paint.setStyle(Paint.Style.FILL); //設(shè)置畫筆為填充
paint.setStrokeWidth(10f); //設(shè)置畫筆寬度
paint.setAntiAlias(true); //抗鋸齒
//屬性動畫
ValueAnimator animator = ValueAnimator.ofFloat(0, 360);
animator.setDuration(1000); //設(shè)置動畫時間
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
k = (float) animation.getAnimatedValue(); //獲取變動后的值
invalidate(); //刷新布局
}
});
animator.start(); //啟動動畫
}
@SuppressLint("DrawAllocation")
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//這里做了不同顏色的范圍判斷,還可以進(jìn)行封裝,為了便于學(xué)習(xí),就沒有再次封裝
if (k < p1[1]) {
shezhi(canvas, 0);
} else if (k < p1[2]) {
shezhi(canvas, 1);
} else {
shezhi(canvas, 2);
}
}
//動畫方法,Android的動畫有三種,View動畫,幀動畫,屬性動畫,
//這里對動畫方法進(jìn)行簡單的封裝,只需要明白,如果存在多個顏色的話,在繪制第二個以后顏色時,每次都要先繪制先前所有顏色,再繪制當(dāng)前顏色,即可理解,這也就是動畫的基本邏輯。
private void shezhi(Canvas canvas, int n) {
for (int i = 0; i <= n; i++) {
paint.setColor(p2[i]);
canvas.drawArc(rectF, p1[i], k - p1[i], true, paint);
}
}
}
}已經(jīng)加入了詳細(xì)的注釋,同樣的原理,還可以將動畫加入到柱形圖等等。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。
網(wǎng)站名稱:Android自定義View實現(xiàn)餅狀圖帶動畫效果
本文網(wǎng)址:http://www.chinadenli.net/article4/gpcpoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、App開發(fā)、全網(wǎng)營銷推廣、網(wǎng)頁設(shè)計公司、網(wǎng)站排名、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)