一個簡單小巧的Android圖表:Charter

jopen 9年前發布 | 11K 次閱讀 Charter 圖表/報表制作
一個簡單小巧的圖表,包括曲線圖和柱狀圖,支持動畫效果。
一個簡單小巧的Android圖表:Charter

build.gradle

dependencies {
    compile 'com.hrules:charter:1.1.1'
}

MainActivity.java

package com.hrules.charter.demo;

import android.content.res.Resources;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import com.hrules.charter.CharterBar;
import com.hrules.charter.CharterLine;
import com.hrules.charter.CharterXLabels;
import com.hrules.charter.CharterYLabels;
import java.util.Random;

public class MainActivity extends AppCompatActivity {
  private static final int DEFAULT_ITEMS_COUNT = 15;
  private static final int DEFAULT_RANDOM_VALUE_MIN = 10;
  private static final int DEFAULT_RANDOM_VALUE_MAX = 100;

  private float[] values;

  @Override protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    values =
        fillRandomValues(DEFAULT_ITEMS_COUNT, DEFAULT_RANDOM_VALUE_MAX, DEFAULT_RANDOM_VALUE_MIN);
    Resources res = getResources();
    int[] barColors = new int[] {
        res.getColor(R.color.lightblue500), res.getColor(R.color.lightblue400),
        res.getColor(R.color.lightblue300)
    };

    // charter_line
    final CharterLine charterLine = (CharterLine) findViewById(R.id.charter_line);
    charterLine.setValues(values);
    charterLine.setOnClickListener(new View.OnClickListener() {
      @Override public void onClick(View v) {
        values = fillRandomValues(DEFAULT_ITEMS_COUNT, DEFAULT_RANDOM_VALUE_MAX,
            DEFAULT_RANDOM_VALUE_MIN);
        charterLine.setValues(values);
        charterLine.show();
      }
    });

    // charter_bar
    final CharterBar charterBar = (CharterBar) findViewById(R.id.charter_bar);
    charterBar.setValues(values);
    charterBar.setColors(barColors);
    charterBar.setOnClickListener(new View.OnClickListener() {
      @Override public void onClick(View v) {
        values = fillRandomValues(DEFAULT_ITEMS_COUNT, DEFAULT_RANDOM_VALUE_MAX,
            DEFAULT_RANDOM_VALUE_MIN);
        charterBar.setValues(values);
        charterBar.show();
      }
    });

    // charter_bar_no_margin
    final CharterBar charterBarNoMargin = (CharterBar) findViewById(R.id.charter_bar_no_margin);
    charterBarNoMargin.setValues(values);
    charterBarNoMargin.setBarMargin(0);
    charterBarNoMargin.setColors(barColors);
    charterBarNoMargin.setColorsBackground(new int[] { android.R.color.white });
    charterBarNoMargin.setOnClickListener(new View.OnClickListener() {
      @Override public void onClick(View v) {
        values = fillRandomValues(DEFAULT_ITEMS_COUNT, DEFAULT_RANDOM_VALUE_MAX,
            DEFAULT_RANDOM_VALUE_MIN);
        charterBarNoMargin.setValues(values);
        charterBarNoMargin.show();
      }
    });

    // charter_line_XLabel
    final CharterXLabels charterLineLabelX =
        (CharterXLabels) findViewById(R.id.charter_line_XLabel);
    charterLineLabelX.setStickyEdges(true);
    charterLineLabelX.setValues(values);

    final CharterLine charterLineWithLabel =
        (CharterLine) findViewById(R.id.charter_line_with_XLabel);
    charterLineWithLabel.setValues(values);
    charterLineWithLabel.setOnClickListener(new View.OnClickListener() {
      @Override public void onClick(View v) {
        values = fillRandomValues(DEFAULT_ITEMS_COUNT, DEFAULT_RANDOM_VALUE_MAX,
            DEFAULT_RANDOM_VALUE_MIN);
        charterLineWithLabel.setValues(values);
        charterLineWithLabel.show();

        charterLineLabelX.setValues(values);
      }
    });

    // charter_bar_XLabel
    final CharterXLabels charterBarLabelX = (CharterXLabels) findViewById(R.id.charter_bar_XLabel);
    charterBarLabelX.setStickyEdges(false);
    charterBarLabelX.setVisibilityPattern(new boolean[] { true, false });
    charterBarLabelX.setValues(values);

    final CharterBar charterBarWithLabel = (CharterBar) findViewById(R.id.charter_bar_with_XLabel);
    charterBarWithLabel.setValues(values);
    charterBarWithLabel.setColors(barColors);
    charterBarWithLabel.setOnClickListener(new View.OnClickListener() {
      @Override public void onClick(View v) {
        values = fillRandomValues(DEFAULT_ITEMS_COUNT, DEFAULT_RANDOM_VALUE_MAX,
            DEFAULT_RANDOM_VALUE_MIN);
        charterBarWithLabel.setValues(values);
        charterBarWithLabel.show();

        charterBarLabelX.setValues(values);
      }
    });

    // charter_line_YLabel
    final CharterYLabels charterLineYLabel =
        (CharterYLabels) findViewById(R.id.charter_line_YLabel);
    charterLineYLabel.setValues(values, true);

    final CharterLine charterLineWithYLabel =
        (CharterLine) findViewById(R.id.charter_line_with_YLabel);
    charterLineWithYLabel.setValues(values);
    charterLineWithYLabel.setOnClickListener(new View.OnClickListener() {
      @Override public void onClick(View v) {
        values = fillRandomValues(DEFAULT_ITEMS_COUNT, DEFAULT_RANDOM_VALUE_MAX,
            DEFAULT_RANDOM_VALUE_MIN);
        charterLineWithYLabel.setValues(values);
        charterLineWithYLabel.show();

        charterLineYLabel.setValues(values, true);
      }
    });

    // charter_bar_YLabel
    final CharterYLabels charterBarYLabel = (CharterYLabels) findViewById(R.id.charter_bar_YLabel);
    charterBarYLabel.setVisibilityPattern(new boolean[] { true, false });
    charterBarYLabel.setValues(values, true);

    final CharterBar charterBarWithYLabel = (CharterBar) findViewById(R.id.charter_bar_with_YLabel);
    charterBarWithYLabel.setValues(values);
    charterBarWithYLabel.setColors(barColors);
    charterBarWithYLabel.setOnClickListener(new View.OnClickListener() {
      @Override public void onClick(View v) {
        values = fillRandomValues(DEFAULT_ITEMS_COUNT, DEFAULT_RANDOM_VALUE_MAX,
            DEFAULT_RANDOM_VALUE_MIN);
        charterBarWithYLabel.setValues(values);
        charterBarWithYLabel.show();

        charterBarYLabel.setValues(values, true);
      }
    });
  }

  private float[] fillRandomValues(int length, int max, int min) {
    Random random = new Random();

    float[] newRandomValues = new float[length];
    for (int i = 0; i < newRandomValues.length; i++) {
      newRandomValues[i] = random.nextInt(max - min + 1) - min;
    }
    return newRandomValues;
  }
}

項目主頁:http://www.baiduhome.net/lib/view/home/1446797737857

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!