a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 系統 > Android > 正文

Android自定義View實現餅狀圖帶動畫效果

2019-10-21 21:33:18
字體:
來源:轉載
供稿:網友

一個簡單的自定義view餅狀圖,加入了動畫效果

先看一下效果

Android,View,餅狀圖,動畫

下面就直接上代碼了

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};    //存放弧度的數組    //定義存放顏色的數組    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);    //設置畫筆為填充      paint.setStrokeWidth(10f);       //設置畫筆寬度      paint.setAntiAlias(true);        //抗鋸齒       //屬性動畫      ValueAnimator animator = ValueAnimator.ofFloat(0, 360);      animator.setDuration(1000);       //設置動畫時間      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);      //這里做了不同顏色的范圍判斷,還可以進行封裝,為了便于學習,就沒有再次封裝      if (k < p1[1]) {        shezhi(canvas, 0);      } else if (k < p1[2]) {        shezhi(canvas, 1);      } else {        shezhi(canvas, 2);      }    }     //動畫方法,Android的動畫有三種,View動畫,幀動畫,屬性動畫,    //這里對動畫方法進行簡單的封裝,只需要明白,如果存在多個顏色的話,在繪制第二個以后顏色時,每次都要先繪制先前所有顏色,再繪制當前顏色,即可理解,這也就是動畫的基本邏輯。    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);      }    }  }}

已經加入了詳細的注釋,同樣的原理,還可以將動畫加入到柱形圖等等。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 在线免费av观看 | 一级激情片| 国产一区在线视频 | 日韩综合 | 日韩欧美国产精品 | 日韩欧美在线一区 | 免费观看黄色大片 | 亚洲av毛片一级二级在线 | 成人羞羞在线观看网站 | 成人区一区二区三区 | 91精品国产日韩91久久久久久 | 亚洲精品在线播放视频 | 日本一本在线 | 亚洲无吗天堂 | 四虎国产精品成人免费4hu | 亚洲精品www久久久久久 | 国产精品无码久久久久 | 色婷婷久久久 | 国产高清在线精品一区二区三区 | 国产一区在线视频 | 欧洲成人在线视频 | 色婷婷综合久久久久中文一区二区 | 国产精品久久久久久久久久久杏吧 | 日韩久久久久久久久久 | 黄色99 | 久久精品一 | 久久中文字幕一区 | 久久国产精彩视频 | 日韩成人在线视频 | 欧美性猛xxx| 四虎一区二区 | 午夜影院a| 久久99精品久久久 | 国产一区二区在线电影 | 99亚洲精品 | 久久精品91 | 久草热久草在线 | 国产成人精品免高潮在线观看 | 国产第一二区 | 播放一级黄色片 | 日韩中文字幕一区二区 |