Ejemplo n.º 1
0
  /**
   * Creates a new graphical view.
   *
   * @param context the context
   * @param chart the chart to be drawn
   */
  public GraphicalView(Context context, AbstractChart chart) {
    super(context);
    mContext = context;
    mChart = chart;
    mHandler = new Handler();
    if (mChart instanceof XYChart) {
      mRenderer = ((XYChart) mChart).getRenderer();
    } else {
      mRenderer = ((RoundChart) mChart).getRenderer();
    }
    if (mRenderer.isZoomButtonsVisible()) {
      zoomInImage = AbFileUtil.getBitmapFromSrc("image/zoom_in.png");
      zoomOutImage = AbFileUtil.getBitmapFromSrc("image/zoom_out.png");
      fitZoomImage = AbFileUtil.getBitmapFromSrc("image/zoom-1.png");
    }

    if (mRenderer instanceof XYMultipleSeriesRenderer
        && ((XYMultipleSeriesRenderer) mRenderer).getMarginsColor()
            == XYMultipleSeriesRenderer.NO_COLOR) {
      ((XYMultipleSeriesRenderer) mRenderer).setMarginsColor(mPaint.getColor());
    }
    if (mRenderer.isZoomEnabled() && mRenderer.isZoomButtonsVisible()
        || mRenderer.isExternalZoomEnabled()) {
      mZoomIn = new Zoom(mChart, true, mRenderer.getZoomRate());
      mZoomOut = new Zoom(mChart, false, mRenderer.getZoomRate());
      mFitZoom = new FitZoom(mChart);
    }
    mTouchHandler = new TouchHandler(this, mChart);

    if (mChart instanceof XYChart) {
      XYMultipleSeriesRenderer mXYMultipleSeriesRenderer = ((XYChart) mChart).getRenderer();

      // 根据屏幕大小重置所有尺寸
      int explainTextSize1 = mXYMultipleSeriesRenderer.getExplainTextSize1();
      int explainTextSize2 = mXYMultipleSeriesRenderer.getExplainTextSize2();
      int scaleCircleRadius = mXYMultipleSeriesRenderer.getScaleCircleRadius();
      int scaleRectWidth = mXYMultipleSeriesRenderer.getScaleRectWidth();
      int scaleRectHeight = mXYMultipleSeriesRenderer.getScaleRectHeight();
      // 按分辨率转换
      mXYMultipleSeriesRenderer.setExplainTextSize1(AbViewUtil.scale(mContext, explainTextSize1));
      mXYMultipleSeriesRenderer.setExplainTextSize2(AbViewUtil.scale(mContext, explainTextSize2));
      mXYMultipleSeriesRenderer.setScaleCircleRadius(AbViewUtil.scale(mContext, scaleCircleRadius));
      mXYMultipleSeriesRenderer.setScaleRectWidth(AbViewUtil.scale(mContext, scaleRectWidth));
      mXYMultipleSeriesRenderer.setScaleRectHeight(AbViewUtil.scale(mContext, scaleRectHeight));

      SimpleSeriesRenderer[] mSimpleSeriesRenderers = mRenderer.getSeriesRenderers();
      if (mSimpleSeriesRenderers != null && mSimpleSeriesRenderers.length > 0) {
        for (int i = 0; i < mSimpleSeriesRenderers.length; i++) {
          SimpleSeriesRenderer mSimpleSeriesRenderer = mSimpleSeriesRenderers[i];
          int mChartValuesTextSize = (int) mSimpleSeriesRenderer.getChartValuesTextSize();
          mSimpleSeriesRenderer.setChartValuesTextSize(
              AbViewUtil.scale(mContext, mChartValuesTextSize));
        }
      }
    }

    int chartTitleTextSize = (int) mRenderer.getChartTitleTextSize();
    mRenderer.setChartTitleTextSize(AbViewUtil.scale(mContext, chartTitleTextSize));
    // 轴线上标签文字大小
    int mLabelsTextSize = (int) mRenderer.getLabelsTextSize();
    mRenderer.setLabelsTextSize(AbViewUtil.scale(mContext, mLabelsTextSize));
    // 说明文字大小
    int mLegendTextSize = (int) mRenderer.getLegendTextSize();
    mRenderer.setLegendTextSize(AbViewUtil.scale(mContext, mLegendTextSize));
  }