真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android中如何通過(guò)自定義view實(shí)現(xiàn)動(dòng)態(tài)柱狀圖-創(chuàng)新互聯(lián)

本篇內(nèi)容主要講解“Android中如何通過(guò)自定義view實(shí)現(xiàn)動(dòng)態(tài)柱狀圖”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Android中如何通過(guò)自定義view實(shí)現(xiàn)動(dòng)態(tài)柱狀圖”吧!

成都創(chuàng)新互聯(lián)從2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元柳州做網(wǎng)站,已為上家服務(wù),為柳州各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575

自定義view


public class Histogram extends View {
 int MAX = 100;//矩形顯示的較大值
 int corner = 0; //矩形的角度。 設(shè)置為0 則沒(méi)有角度。
 double data = 0.0;//顯示的數(shù)
 double tempData = 0; //初始數(shù)據(jù)
 int textPadding = 50; //字體與矩形圖的距離
  Paint mPaint;
 int mColor;
  Context mContext;


 //構(gòu)造函數(shù)
 public Histogram(Context context) {
  super(context);
  mContext = context;
 }

 public Histogram(Context context, @Nullable AttributeSet attrs) {
  super(context, attrs);
  mContext = context;
  initPaint();
 }

 public Histogram(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
  super(context, attrs, defStyleAttr);
  mContext = context;
  initPaint();
 }

 //畫(huà)筆方法
 private void initPaint() {
  mPaint = new Paint();
  mPaint.setAntiAlias(true);
  mColor = mContext.getResources().getColor(R.color.gary);
  mPaint.setColor(mColor);
 }

 @Override
 public void draw(Canvas canvas) {
  super.draw(canvas);

  if (data == 0.0) {
   mPaint.setTextSize(getWidth() / 2);
   RectF oval3 = new RectF(0, getHeight() - DensityUtils.pxTodip(mContext, 20), getWidth(), getHeight());// 設(shè)置個(gè)新的長(zhǎng)方形
   canvas.drawRoundRect(oval3, DensityUtils.pxTodip(mContext, corner), DensityUtils.pxTodip(mContext, corner), mPaint);

   canvas.drawText("0",
     getWidth() * 0.5f - mPaint.measureText("0") * 0.5f,
     getHeight() - DensityUtils.pxTodip(mContext, 20) - 2 * DensityUtils.pxTodip(mContext, textPadding),
     mPaint);
   return;
  }

  //防止數(shù)值很大的的時(shí)候,動(dòng)畫(huà)時(shí)間過(guò)長(zhǎng)
  int step = (int) (data / 100 + 1.0);

  if (tempData < data - step) {
   tempData = tempData + step;
  } else {
   tempData = data;
  }
  //畫(huà)圓角矩形
  String S = tempData + ""; //如果數(shù)字后面需要加% 則在""中添加%
  //設(shè)置顯示的字體
  Typeface typeface = Typeface.createFromAsset(getContext().getAssets(),"digital-7.ttf");
  mPaint.setTypeface(typeface);
//  //一個(gè)字和兩,三個(gè)字的字號(hào)相同
  if (S.length() < 4) {
   mPaint.setTextSize(getWidth()/2 );
  } else {
   mPaint.setTextSize(50); //可以通過(guò)getWidth()/2 改變字體大小 也可以通過(guò)設(shè)置數(shù)字來(lái)改變自己想要的字體大小 當(dāng)超出矩形圖寬度時(shí)不能顯示全部
  }
//
  float textH = mPaint.ascent() + mPaint.descent();
  float MaxH = getHeight() - textH - 2 * DensityUtils.pxTodip(mContext, textPadding);
//  //圓角矩形的實(shí)際高度
  float realH = (float) (MaxH / MAX * tempData);
  RectF oval3 = new RectF(0, getHeight() - realH, getWidth(), getHeight());// 設(shè)置個(gè)新的長(zhǎng)方形
  canvas.drawRoundRect(oval3, DensityUtils.pxTodip(mContext, corner), DensityUtils.pxTodip(mContext, corner), mPaint);
  //寫(xiě)數(shù)字
  canvas.drawText(S,
    getWidth() * 0.5f - mPaint.measureText(S) * 0.5f,
    getHeight() - realH - 2 * DensityUtils.pxTodip(mContext, textPadding),
    mPaint);
  if (tempData != data) {
   postInvalidate();
  }
 }

 public void setData(double data, int MAX) {
  this.data = data;
  this.MAX = MAX;
  postInvalidate();
 }

 public int getmColor() {
  return mColor;
 }

 public void setmColor(int mColor) {
  this.mColor = mColor;
 }

}

布局



 
 

 

 

 

 
 


MainActivity調(diào)用initAllViews()方法

 private void initAllViews() {
  column_one = (Histogram) findViewById(R.id.column_one);
  column_two = (Histogram) findViewById(R.id.column_two);
  column_three = (Histogram) findViewById(R.id.column_three);

  column_one.setData( 20.22, 100);
  column_two.setData(30.2, 100);
  column_three.setData(40, 100);
  column_one.mPaint.setColor(getResources().getColor(R.color.colorAccent)); //改變柱狀圖的顏色
 }

到此,相信大家對(duì)“Android中如何通過(guò)自定義view實(shí)現(xiàn)動(dòng)態(tài)柱狀圖”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)建站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


網(wǎng)站名稱:Android中如何通過(guò)自定義view實(shí)現(xiàn)動(dòng)態(tài)柱狀圖-創(chuàng)新互聯(lián)
當(dāng)前路徑:http://weahome.cn/article/heiis.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部