Search in sources :

Example 56 with Typeface

use of android.graphics.Typeface in project LuaViewSDK by alibaba.

the class TypefaceUtil method create.

/**
     * create typeface
     *
     * @param context
     * @param name
     * @return
     */
public static Typeface create(final Context context, final String name) {
    Typeface result = SimpleCache.getCache(TAG).get(name);
    if (result == null) {
        final String fontNameOrAssetPathOrFilePath = ParamUtil.getFileNameWithPostfix(name, "ttf");
        result = createFromAsset(context, fontNameOrAssetPathOrFilePath);
        if (result == null) {
            result = createFromFile(fontNameOrAssetPathOrFilePath);
        }
        if (result == null) {
            result = createByName(fontNameOrAssetPathOrFilePath);
        }
    }
    //cache name
    SimpleCache.getCache(TAG_TYPEFACE_NAME).put(result, name);
    return SimpleCache.getCache(TAG).put(name, result);
}
Also used : Typeface(android.graphics.Typeface)

Example 57 with Typeface

use of android.graphics.Typeface in project MPAndroidChart by PhilJay.

the class DrawChartActivity method onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_draw_chart);
    mChart = (LineChart) findViewById(R.id.chart1);
    // listener for selecting and drawing
    mChart.setOnChartValueSelectedListener(this);
    mChart.setOnDrawListener(this);
    // if disabled, drawn datasets with the finger will not be automatically
    // finished
    // mChart.setAutoFinish(true);
    mChart.setDrawGridBackground(false);
    // add dummy-data to the chart
    initWithDummyData();
    Typeface tf = Typeface.createFromAsset(getAssets(), "OpenSans-Regular.ttf");
    XAxis xl = mChart.getXAxis();
    xl.setTypeface(tf);
    xl.setAvoidFirstLastClipping(true);
    YAxis yl = mChart.getAxisLeft();
    yl.setTypeface(tf);
    mChart.getLegend().setEnabled(false);
// mChart.setYRange(-40f, 40f, true);
// call this to reset the changed y-range
// mChart.resetYRange(true);
}
Also used : Typeface(android.graphics.Typeface) XAxis(com.github.mikephil.charting.components.XAxis) YAxis(com.github.mikephil.charting.components.YAxis)

Example 58 with Typeface

use of android.graphics.Typeface in project MPAndroidChart by PhilJay.

the class LineChartActivity1 method onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_linechart);
    tvX = (TextView) findViewById(R.id.tvXMax);
    tvY = (TextView) findViewById(R.id.tvYMax);
    mSeekBarX = (SeekBar) findViewById(R.id.seekBar1);
    mSeekBarY = (SeekBar) findViewById(R.id.seekBar2);
    mSeekBarX.setProgress(45);
    mSeekBarY.setProgress(100);
    mSeekBarY.setOnSeekBarChangeListener(this);
    mSeekBarX.setOnSeekBarChangeListener(this);
    mChart = (LineChart) findViewById(R.id.chart1);
    mChart.setOnChartGestureListener(this);
    mChart.setOnChartValueSelectedListener(this);
    mChart.setDrawGridBackground(false);
    // no description text
    mChart.getDescription().setEnabled(false);
    // enable touch gestures
    mChart.setTouchEnabled(true);
    // enable scaling and dragging
    mChart.setDragEnabled(true);
    mChart.setScaleEnabled(true);
    // mChart.setScaleXEnabled(true);
    // mChart.setScaleYEnabled(true);
    // if disabled, scaling can be done on x- and y-axis separately
    mChart.setPinchZoom(true);
    // set an alternative background color
    // mChart.setBackgroundColor(Color.GRAY);
    // create a custom MarkerView (extend MarkerView) and specify the layout
    // to use for it
    MyMarkerView mv = new MyMarkerView(this, R.layout.custom_marker_view);
    // For bounds control
    mv.setChartView(mChart);
    // Set the marker to the chart
    mChart.setMarker(mv);
    // x-axis limit line
    LimitLine llXAxis = new LimitLine(10f, "Index 10");
    llXAxis.setLineWidth(4f);
    llXAxis.enableDashedLine(10f, 10f, 0f);
    llXAxis.setLabelPosition(LimitLabelPosition.RIGHT_BOTTOM);
    llXAxis.setTextSize(10f);
    XAxis xAxis = mChart.getXAxis();
    xAxis.enableGridDashedLine(10f, 10f, 0f);
    //xAxis.setValueFormatter(new MyCustomXAxisValueFormatter());
    //xAxis.addLimitLine(llXAxis); // add x-axis limit line
    Typeface tf = Typeface.createFromAsset(getAssets(), "OpenSans-Regular.ttf");
    LimitLine ll1 = new LimitLine(150f, "Upper Limit");
    ll1.setLineWidth(4f);
    ll1.enableDashedLine(10f, 10f, 0f);
    ll1.setLabelPosition(LimitLabelPosition.RIGHT_TOP);
    ll1.setTextSize(10f);
    ll1.setTypeface(tf);
    LimitLine ll2 = new LimitLine(-30f, "Lower Limit");
    ll2.setLineWidth(4f);
    ll2.enableDashedLine(10f, 10f, 0f);
    ll2.setLabelPosition(LimitLabelPosition.RIGHT_BOTTOM);
    ll2.setTextSize(10f);
    ll2.setTypeface(tf);
    YAxis leftAxis = mChart.getAxisLeft();
    // reset all limit lines to avoid overlapping lines
    leftAxis.removeAllLimitLines();
    leftAxis.addLimitLine(ll1);
    leftAxis.addLimitLine(ll2);
    leftAxis.setAxisMaximum(200f);
    leftAxis.setAxisMinimum(-50f);
    //leftAxis.setYOffset(20f);
    leftAxis.enableGridDashedLine(10f, 10f, 0f);
    leftAxis.setDrawZeroLine(false);
    // limit lines are drawn behind data (and not on top)
    leftAxis.setDrawLimitLinesBehindData(true);
    mChart.getAxisRight().setEnabled(false);
    //mChart.getViewPortHandler().setMaximumScaleY(2f);
    //mChart.getViewPortHandler().setMaximumScaleX(2f);
    // add data
    setData(45, 100);
    //        mChart.setVisibleXRange(20);
    //        mChart.setVisibleYRange(20f, AxisDependency.LEFT);
    //        mChart.centerViewTo(20, 50, AxisDependency.LEFT);
    mChart.animateX(2500);
    //mChart.invalidate();
    // get the legend (only possible after setting data)
    Legend l = mChart.getLegend();
    // modify the legend ...
    l.setForm(LegendForm.LINE);
// // dont forget to refresh the drawing
// mChart.invalidate();
}
Also used : Legend(com.github.mikephil.charting.components.Legend) Typeface(android.graphics.Typeface) LimitLine(com.github.mikephil.charting.components.LimitLine) MyMarkerView(com.xxmassdeveloper.mpchartexample.custom.MyMarkerView) XAxis(com.github.mikephil.charting.components.XAxis) YAxis(com.github.mikephil.charting.components.YAxis)

Example 59 with Typeface

use of android.graphics.Typeface in project MPAndroidChart by PhilJay.

the class LegendRenderer method renderLegend.

public void renderLegend(Canvas c) {
    if (!mLegend.isEnabled())
        return;
    Typeface tf = mLegend.getTypeface();
    if (tf != null)
        mLegendLabelPaint.setTypeface(tf);
    mLegendLabelPaint.setTextSize(mLegend.getTextSize());
    mLegendLabelPaint.setColor(mLegend.getTextColor());
    float labelLineHeight = Utils.getLineHeight(mLegendLabelPaint, legendFontMetrics);
    float labelLineSpacing = Utils.getLineSpacing(mLegendLabelPaint, legendFontMetrics) + Utils.convertDpToPixel(mLegend.getYEntrySpace());
    float formYOffset = labelLineHeight - Utils.calcTextHeight(mLegendLabelPaint, "ABC") / 2.f;
    LegendEntry[] entries = mLegend.getEntries();
    float formToTextSpace = Utils.convertDpToPixel(mLegend.getFormToTextSpace());
    float xEntrySpace = Utils.convertDpToPixel(mLegend.getXEntrySpace());
    Legend.LegendOrientation orientation = mLegend.getOrientation();
    Legend.LegendHorizontalAlignment horizontalAlignment = mLegend.getHorizontalAlignment();
    Legend.LegendVerticalAlignment verticalAlignment = mLegend.getVerticalAlignment();
    Legend.LegendDirection direction = mLegend.getDirection();
    float defaultFormSize = Utils.convertDpToPixel(mLegend.getFormSize());
    // space between the entries
    float stackSpace = Utils.convertDpToPixel(mLegend.getStackSpace());
    float yoffset = mLegend.getYOffset();
    float xoffset = mLegend.getXOffset();
    float originPosX = 0.f;
    switch(horizontalAlignment) {
        case LEFT:
            if (orientation == Legend.LegendOrientation.VERTICAL)
                originPosX = xoffset;
            else
                originPosX = mViewPortHandler.contentLeft() + xoffset;
            if (direction == Legend.LegendDirection.RIGHT_TO_LEFT)
                originPosX += mLegend.mNeededWidth;
            break;
        case RIGHT:
            if (orientation == Legend.LegendOrientation.VERTICAL)
                originPosX = mViewPortHandler.getChartWidth() - xoffset;
            else
                originPosX = mViewPortHandler.contentRight() - xoffset;
            if (direction == Legend.LegendDirection.LEFT_TO_RIGHT)
                originPosX -= mLegend.mNeededWidth;
            break;
        case CENTER:
            if (orientation == Legend.LegendOrientation.VERTICAL)
                originPosX = mViewPortHandler.getChartWidth() / 2.f;
            else
                originPosX = mViewPortHandler.contentLeft() + mViewPortHandler.contentWidth() / 2.f;
            originPosX += (direction == Legend.LegendDirection.LEFT_TO_RIGHT ? +xoffset : -xoffset);
            // So here we offset the vertical ones only.
            if (orientation == Legend.LegendOrientation.VERTICAL) {
                originPosX += (direction == Legend.LegendDirection.LEFT_TO_RIGHT ? -mLegend.mNeededWidth / 2.0 + xoffset : mLegend.mNeededWidth / 2.0 - xoffset);
            }
            break;
    }
    switch(orientation) {
        case HORIZONTAL:
            {
                List<FSize> calculatedLineSizes = mLegend.getCalculatedLineSizes();
                List<FSize> calculatedLabelSizes = mLegend.getCalculatedLabelSizes();
                List<Boolean> calculatedLabelBreakPoints = mLegend.getCalculatedLabelBreakPoints();
                float posX = originPosX;
                float posY = 0.f;
                switch(verticalAlignment) {
                    case TOP:
                        posY = yoffset;
                        break;
                    case BOTTOM:
                        posY = mViewPortHandler.getChartHeight() - yoffset - mLegend.mNeededHeight;
                        break;
                    case CENTER:
                        posY = (mViewPortHandler.getChartHeight() - mLegend.mNeededHeight) / 2.f + yoffset;
                        break;
                }
                int lineIndex = 0;
                for (int i = 0, count = entries.length; i < count; i++) {
                    LegendEntry e = entries[i];
                    boolean drawingForm = e.form != Legend.LegendForm.NONE;
                    float formSize = Float.isNaN(e.formSize) ? defaultFormSize : Utils.convertDpToPixel(e.formSize);
                    if (i < calculatedLabelBreakPoints.size() && calculatedLabelBreakPoints.get(i)) {
                        posX = originPosX;
                        posY += labelLineHeight + labelLineSpacing;
                    }
                    if (posX == originPosX && horizontalAlignment == Legend.LegendHorizontalAlignment.CENTER && lineIndex < calculatedLineSizes.size()) {
                        posX += (direction == Legend.LegendDirection.RIGHT_TO_LEFT ? calculatedLineSizes.get(lineIndex).width : -calculatedLineSizes.get(lineIndex).width) / 2.f;
                        lineIndex++;
                    }
                    // grouped forms have null labels
                    boolean isStacked = e.label == null;
                    if (drawingForm) {
                        if (direction == Legend.LegendDirection.RIGHT_TO_LEFT)
                            posX -= formSize;
                        drawForm(c, posX, posY + formYOffset, e, mLegend);
                        if (direction == Legend.LegendDirection.LEFT_TO_RIGHT)
                            posX += formSize;
                    }
                    if (!isStacked) {
                        if (drawingForm)
                            posX += direction == Legend.LegendDirection.RIGHT_TO_LEFT ? -formToTextSpace : formToTextSpace;
                        if (direction == Legend.LegendDirection.RIGHT_TO_LEFT)
                            posX -= calculatedLabelSizes.get(i).width;
                        drawLabel(c, posX, posY + labelLineHeight, e.label);
                        if (direction == Legend.LegendDirection.LEFT_TO_RIGHT)
                            posX += calculatedLabelSizes.get(i).width;
                        posX += direction == Legend.LegendDirection.RIGHT_TO_LEFT ? -xEntrySpace : xEntrySpace;
                    } else
                        posX += direction == Legend.LegendDirection.RIGHT_TO_LEFT ? -stackSpace : stackSpace;
                }
                break;
            }
        case VERTICAL:
            {
                // contains the stacked legend size in pixels
                float stack = 0f;
                boolean wasStacked = false;
                float posY = 0.f;
                switch(verticalAlignment) {
                    case TOP:
                        posY = (horizontalAlignment == Legend.LegendHorizontalAlignment.CENTER ? 0.f : mViewPortHandler.contentTop());
                        posY += yoffset;
                        break;
                    case BOTTOM:
                        posY = (horizontalAlignment == Legend.LegendHorizontalAlignment.CENTER ? mViewPortHandler.getChartHeight() : mViewPortHandler.contentBottom());
                        posY -= mLegend.mNeededHeight + yoffset;
                        break;
                    case CENTER:
                        posY = mViewPortHandler.getChartHeight() / 2.f - mLegend.mNeededHeight / 2.f + mLegend.getYOffset();
                        break;
                }
                for (int i = 0; i < entries.length; i++) {
                    LegendEntry e = entries[i];
                    boolean drawingForm = e.form != Legend.LegendForm.NONE;
                    float formSize = Float.isNaN(e.formSize) ? defaultFormSize : Utils.convertDpToPixel(e.formSize);
                    float posX = originPosX;
                    if (drawingForm) {
                        if (direction == Legend.LegendDirection.LEFT_TO_RIGHT)
                            posX += stack;
                        else
                            posX -= formSize - stack;
                        drawForm(c, posX, posY + formYOffset, e, mLegend);
                        if (direction == Legend.LegendDirection.LEFT_TO_RIGHT)
                            posX += formSize;
                    }
                    if (e.label != null) {
                        if (drawingForm && !wasStacked)
                            posX += direction == Legend.LegendDirection.LEFT_TO_RIGHT ? formToTextSpace : -formToTextSpace;
                        else if (wasStacked)
                            posX = originPosX;
                        if (direction == Legend.LegendDirection.RIGHT_TO_LEFT)
                            posX -= Utils.calcTextWidth(mLegendLabelPaint, e.label);
                        if (!wasStacked) {
                            drawLabel(c, posX, posY + labelLineHeight, e.label);
                        } else {
                            posY += labelLineHeight + labelLineSpacing;
                            drawLabel(c, posX, posY + labelLineHeight, e.label);
                        }
                        // make a step down
                        posY += labelLineHeight + labelLineSpacing;
                        stack = 0f;
                    } else {
                        stack += formSize + stackSpace;
                        wasStacked = true;
                    }
                }
                break;
            }
    }
}
Also used : Legend(com.github.mikephil.charting.components.Legend) Typeface(android.graphics.Typeface) LegendEntry(com.github.mikephil.charting.components.LegendEntry) ArrayList(java.util.ArrayList) List(java.util.List)

Example 60 with Typeface

use of android.graphics.Typeface in project MPAndroidChart by PhilJay.

the class LegendRenderer method computeLegend.

/**
     * Prepares the legend and calculates all needed forms, labels and colors.
     *
     * @param data
     */
public void computeLegend(ChartData<?> data) {
    if (!mLegend.isLegendCustom()) {
        computedEntries.clear();
        // loop for building up the colors and labels used in the legend
        for (int i = 0; i < data.getDataSetCount(); i++) {
            IDataSet dataSet = data.getDataSetByIndex(i);
            List<Integer> clrs = dataSet.getColors();
            int entryCount = dataSet.getEntryCount();
            // if we have a barchart with stacked bars
            if (dataSet instanceof IBarDataSet && ((IBarDataSet) dataSet).isStacked()) {
                IBarDataSet bds = (IBarDataSet) dataSet;
                String[] sLabels = bds.getStackLabels();
                for (int j = 0; j < clrs.size() && j < bds.getStackSize(); j++) {
                    computedEntries.add(new LegendEntry(sLabels[j % sLabels.length], dataSet.getForm(), dataSet.getFormSize(), dataSet.getFormLineWidth(), dataSet.getFormLineDashEffect(), clrs.get(j)));
                }
                if (bds.getLabel() != null) {
                    // add the legend description label
                    computedEntries.add(new LegendEntry(dataSet.getLabel(), Legend.LegendForm.NONE, Float.NaN, Float.NaN, null, ColorTemplate.COLOR_NONE));
                }
            } else if (dataSet instanceof IPieDataSet) {
                IPieDataSet pds = (IPieDataSet) dataSet;
                for (int j = 0; j < clrs.size() && j < entryCount; j++) {
                    computedEntries.add(new LegendEntry(pds.getEntryForIndex(j).getLabel(), dataSet.getForm(), dataSet.getFormSize(), dataSet.getFormLineWidth(), dataSet.getFormLineDashEffect(), clrs.get(j)));
                }
                if (pds.getLabel() != null) {
                    // add the legend description label
                    computedEntries.add(new LegendEntry(dataSet.getLabel(), Legend.LegendForm.NONE, Float.NaN, Float.NaN, null, ColorTemplate.COLOR_NONE));
                }
            } else if (dataSet instanceof ICandleDataSet && ((ICandleDataSet) dataSet).getDecreasingColor() != ColorTemplate.COLOR_NONE) {
                int decreasingColor = ((ICandleDataSet) dataSet).getDecreasingColor();
                int increasingColor = ((ICandleDataSet) dataSet).getIncreasingColor();
                computedEntries.add(new LegendEntry(null, dataSet.getForm(), dataSet.getFormSize(), dataSet.getFormLineWidth(), dataSet.getFormLineDashEffect(), decreasingColor));
                computedEntries.add(new LegendEntry(dataSet.getLabel(), dataSet.getForm(), dataSet.getFormSize(), dataSet.getFormLineWidth(), dataSet.getFormLineDashEffect(), increasingColor));
            } else {
                for (int j = 0; j < clrs.size() && j < entryCount; j++) {
                    String label;
                    // if multiple colors are set for a DataSet, group them
                    if (j < clrs.size() - 1 && j < entryCount - 1) {
                        label = null;
                    } else {
                        // add label to the last entry
                        label = data.getDataSetByIndex(i).getLabel();
                    }
                    computedEntries.add(new LegendEntry(label, dataSet.getForm(), dataSet.getFormSize(), dataSet.getFormLineWidth(), dataSet.getFormLineDashEffect(), clrs.get(j)));
                }
            }
        }
        if (mLegend.getExtraEntries() != null) {
            Collections.addAll(computedEntries, mLegend.getExtraEntries());
        }
        mLegend.setEntries(computedEntries);
    }
    Typeface tf = mLegend.getTypeface();
    if (tf != null)
        mLegendLabelPaint.setTypeface(tf);
    mLegendLabelPaint.setTextSize(mLegend.getTextSize());
    mLegendLabelPaint.setColor(mLegend.getTextColor());
    // calculate all dimensions of the mLegend
    mLegend.calculateDimensions(mLegendLabelPaint, mViewPortHandler);
}
Also used : ICandleDataSet(com.github.mikephil.charting.interfaces.datasets.ICandleDataSet) LegendEntry(com.github.mikephil.charting.components.LegendEntry) IPieDataSet(com.github.mikephil.charting.interfaces.datasets.IPieDataSet) Typeface(android.graphics.Typeface) IBarDataSet(com.github.mikephil.charting.interfaces.datasets.IBarDataSet) IDataSet(com.github.mikephil.charting.interfaces.datasets.IDataSet) Paint(android.graphics.Paint)

Aggregations

Typeface (android.graphics.Typeface)266 Paint (android.graphics.Paint)57 TextPaint (android.text.TextPaint)40 TypedArray (android.content.res.TypedArray)34 TextView (android.widget.TextView)21 View (android.view.View)20 Canvas (android.graphics.Canvas)15 Bitmap (android.graphics.Bitmap)13 Context (android.content.Context)11 Resources (android.content.res.Resources)10 Test (org.junit.Test)8 ColorStateList (android.content.res.ColorStateList)7 Legend (com.github.mikephil.charting.components.Legend)7 File (java.io.File)7 Intent (android.content.Intent)6 Attributes (com.cengalabs.flatui.Attributes)6 XAxis (com.github.mikephil.charting.components.XAxis)6 YAxis (com.github.mikephil.charting.components.YAxis)6 ContentResolver (android.content.ContentResolver)5 Drawable (android.graphics.drawable.Drawable)5