最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android自定義控件橫向柱狀統(tǒng)計(jì)圖

 更新時(shí)間:2020年07月16日 17:07:27   作者:尖叫_  
這篇文章主要為大家詳細(xì)介紹了Android自定義控件橫向柱狀統(tǒng)計(jì)圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Android實(shí)現(xiàn)橫向柱狀統(tǒng)計(jì)圖的具體代碼,供大家參考,具體內(nèi)容如下

碰到一個(gè)項(xiàng)目需要用到統(tǒng)計(jì)圖功能,比較簡(jiǎn)單就自定義寫(xiě)了一個(gè)。沒(méi)有寫(xiě)過(guò)多的樣式和功能,僅有簡(jiǎn)單的橫向柱狀統(tǒng)計(jì)圖。

傳入數(shù)據(jù)后大致樣式如下:

/**橫向柱狀統(tǒng)計(jì)圖
 * Created by Administrator on 2018/1/16 0016.
 */
public class HorizontalChartView extends View {
 
 /**
  * 間隔線畫(huà)筆
  */
 private Paint paint;
 
 /**
  * 線的顏色
  */
 private int color_line = Color.rgb(230, 230, 230);
 
 /**
  * 字的顏色
  */
 private int color_font = Color.rgb(51, 51, 51);
 
 /**
  * 比例圖顏色
  */
 private int color_plan = Color.rgb(22, 85, 164);
 
 /**
  * 比例圖畫(huà)筆
  */
 private Paint paint_plan;
 
 /**
  * 比例圖高度
  */
 private int plan_height;
 
 /**
  * 初始化比例
  */
 private Float[] ratio = {0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f};
 
 /**
  * 文字畫(huà)筆1
  */
 private Paint paint_font;
 
 /**
  * 文字畫(huà)筆2
  */
 private Paint paint_font2;
 
 /**
  * 線的條數(shù)
  */
 private int line_num = 11;
 
 /**
  * 比例數(shù)
  */
 private String ratio_num = "0";
 
 /**
  * 月份
  */
 private String month_num = "1月";
 
 
 public HorizontalChartView(Context context) {
  super(context);
 }
 
 public HorizontalChartView(Context context, @Nullable AttributeSet attrs) {
  super(context, attrs);
  init(context, attrs);
 }
 
 public HorizontalChartView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
  super(context, attrs, defStyleAttr);
  init(context, attrs);
 }
 
 @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
 public HorizontalChartView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
  super(context, attrs, defStyleAttr, defStyleRes);
  init(context, attrs);
 }
 
 /**
  * 初始化
  *
  * @param context
  * @param attrs
  */
 public void init(Context context, AttributeSet attrs) {
 
  paint = new Paint();
  paint.setColor(color_line);
 
  paint_plan = new Paint();
  paint_plan.setColor(color_plan);
 
  paint_font = new Paint();
  paint_font.setColor(color_font);
  paint_font.setTextSize(DensityUtils.dp2px(context, 12));
  paint_font.setAntiAlias(true);
  paint_font.setTextAlign(Paint.Align.CENTER);
 
  paint_font2 = new Paint();
  paint_font2.setColor(color_font);
  paint_font2.setTextSize(DensityUtils.dp2px(context, 12));
  paint_font2.setAntiAlias(true);
  paint_font2.setTextAlign(Paint.Align.RIGHT);
 }
 
 
 @Override
 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
  super.onMeasure(widthMeasureSpec, heightMeasureSpec);
 }
 
 @Override
 protected void onDraw(Canvas canvas) {
  super.onDraw(canvas);
  int width = getWidth();
  int height = getHeight();
 
  int lift_width = (int) (width * 0.15);
  int line_width = (int) (width * 0.78);
  //獲取底部文字信息
  Paint.FontMetrics fm = paint_font.getFontMetrics();
 
  int line_length = (int) (height - (fm.bottom - fm.top) - 4);
 
  plan_height = (int) (line_length / 12 * 0.3);
 
  for (int i = 0; i < line_num; i++) {
   canvas.save();
 
   if (i == 0) {
    ratio_num = "0";
   } else {
    ratio_num = i + "0";
   }
   //底部百分比數(shù)字
   canvas.drawText(ratio_num, lift_width + i * line_width / 10, height - 10, paint_font);
   //網(wǎng)絡(luò)線
   canvas.drawLine(lift_width + i * line_width / 10, 0, lift_width + i * line_width / 10, line_length, paint);
   canvas.restore();
  }
  //獲取月份文字信息
  Paint.FontMetrics fm1 = paint_font2.getFontMetrics();
  for (int n = 12; n > 0; n--) {
   canvas.save();
   month_num = n + "月";
   //左側(cè)月份
   canvas.drawText(month_num, lift_width / 4 * 3, ((line_length / 12)) * (13 - n) - line_length / 24 + (fm1.bottom - fm1.top) / 2, paint_font2);
   //比例圖
   canvas.drawRect(lift_width, line_length / 12 * (13 - n) - (line_length / 24 + plan_height / 2) + fm1.bottom,
     line_width * (ratio[n - 1] / 100) + lift_width, line_length / 12 * (13 - n) - (line_length / 24 + plan_height / 2) + plan_height + fm1.bottom, paint_plan);
 
   canvas.restore();
  }
 }
 
 /**
  * 傳入比例信息
  *
  * @param ratio
  */
 public void setRatio(Float[] ratio) {
  this.ratio = ratio;
 }
 
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 深入淺析Android接口回調(diào)機(jī)制

    深入淺析Android接口回調(diào)機(jī)制

    在Android中到處可見(jiàn)接口回調(diào)機(jī)制,尤其是UI事件處理方面,本文給大家介紹android接口回調(diào)機(jī)制,涉及到android接口回調(diào)相關(guān)知識(shí),對(duì)本文感興趣的朋友可以參考下本篇文章
    2015-11-11
  • Android ViewFlipper簡(jiǎn)單用法解析

    Android ViewFlipper簡(jiǎn)單用法解析

    這篇文章主要為大家詳細(xì)介紹了Android ViewFlipper簡(jiǎn)單用法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Android Studio如何修改字體的大小

    Android Studio如何修改字體的大小

    這篇文章主要介紹了Android Studio如何修改字體的大小的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Android酷炫動(dòng)畫(huà)效果之3D星體旋轉(zhuǎn)效果

    Android酷炫動(dòng)畫(huà)效果之3D星體旋轉(zhuǎn)效果

    本文要實(shí)現(xiàn)的3D星體旋轉(zhuǎn)效果是從CoverFlow演繹而來(lái),不過(guò)CoverFlow只是對(duì)圖像進(jìn)行轉(zhuǎn)動(dòng),我這里要實(shí)現(xiàn)的效果是要對(duì)所有的View進(jìn)行類(lèi)似旋轉(zhuǎn)木馬的轉(zhuǎn)動(dòng)
    2018-05-05
  • flutter實(shí)現(xiàn)appbar下選項(xiàng)卡切換

    flutter實(shí)現(xiàn)appbar下選項(xiàng)卡切換

    這篇文章主要為大家詳細(xì)介紹了flutter實(shí)現(xiàn)appbar下選項(xiàng)卡切換,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Android事件分發(fā)機(jī)制(上) ViewGroup的事件分發(fā)

    Android事件分發(fā)機(jī)制(上) ViewGroup的事件分發(fā)

    這篇文章主要為大家詳細(xì)介紹了Android ViewGroup的事件分發(fā)機(jī)制上篇,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Kotlin中的contract到底有什么用詳解

    Kotlin中的contract到底有什么用詳解

    Kotlin contracts是一種通知編譯器有關(guān)函數(shù)行為的方式,下面這篇文章主要給大家介紹了關(guān)于Kotlin中contract到底有什么用的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • Android4.4新增函數(shù)訪問(wèn)外部存儲(chǔ)

    Android4.4新增函數(shù)訪問(wèn)外部存儲(chǔ)

    這篇文章主要介紹了Android4.4新增函數(shù)訪問(wèn)外部存儲(chǔ)的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-10-10
  • Android實(shí)現(xiàn)九宮格手勢(shì)密碼

    Android實(shí)現(xiàn)九宮格手勢(shì)密碼

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)九宮格手勢(shì)密碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Android Manifest中meta-data擴(kuò)展元素?cái)?shù)據(jù)的配置與獲取方式

    Android Manifest中meta-data擴(kuò)展元素?cái)?shù)據(jù)的配置與獲取方式

    這篇文章主要介紹了Android Manifest中meta-data擴(kuò)展元素?cái)?shù)據(jù)的配置與獲取方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03

最新評(píng)論

乌苏市| 山阳县| 和政县| 东明县| 柏乡县| 铁岭县| 胶南市| 德州市| 永顺县| 麻城市| 德阳市| 乐清市| 汉阴县| 加查县| 大悟县| 塔河县| 唐海县| 云林县| 宜川县| 南城县| 桐乡市| 江孜县| 兴山县| 衢州市| 巨鹿县| 钟祥市| 班玛县| 即墨市| 蓝田县| 上栗县| 苍山县| 翁牛特旗| 高雄县| 西畴县| 孝义市| 三亚市| 石家庄市| 万宁市| 鄂温| 额济纳旗| 历史|