android-在LineChart上显示图像而不是圆形

android-在LineChart上显示图像而不是圆形,第1张

概述我已经使用库MPAndroidChart创建了LineChart,并且一切正常.现在,我要为图表上的每个条目显示一个可绘制的(图像)而不是默认的圆圈.我从API尝试了很多选择,但是没有运气.谁能告诉我该怎么做?解决方法:最后,在尝试了很多事情之后,借助@DavidRawson的建议和此帖子MPAndroidChartLi

我已经使用库MPAndroidChart创建了lineChart,并且一切正常.

现在,我要为图表上的每个条目显示一个可绘制的(图像)而不是默认的圆圈.

我从API尝试了很多选择,但是没有运气.

谁能告诉我该怎么做?

解决方法:

最后,在尝试了很多事情之后,借助@DavID Rawson的建议和此帖子MPAndroidChart LineChart custom highlight drawable

我设法创建了一个自定义渲染器,该渲染器用提供的图像替换了图表中的默认圆形图像.

以下是解决方案的代码片段.

class ImagelineChartRenderer extends lineChartRenderer {private final lineChart lineChart;private final Bitmap image;ImagelineChartRenderer(lineChart chart, ChartAnimator animator, VIEwPortHandler vIEwPortHandler, Bitmap image) {    super(chart, animator, vIEwPortHandler);    this.lineChart = chart;    this.image = image;}private float[] mCirclesBuffer = new float[2];@OverrIDeprotected voID drawCircles(Canvas c) {    mRenderPaint.setStyle(Paint.Style.FILL);    float phaseY = mAnimator.getPhaseY();    mCirclesBuffer[0] = 0;    mCirclesBuffer[1] = 0;    List<IlineDataSet> dataSets = mChart.getlineData().getDataSets();    //Draw bitmap image for every data set with size as radius * 10, and store it in scaled bitmaps array    Bitmap[] scaledBitmaps = new Bitmap[dataSets.size()];    float[] scaledBitmapOffsets = new float[dataSets.size()];    for (int i = 0; i < dataSets.size(); i++) {        float imageSize = dataSets.get(i).getCircleRadius() * 10;        scaledBitmapOffsets[i] = imageSize / 2f;        scaledBitmaps[i] = scaleImage((int) imageSize);    }    for (int i = 0; i < dataSets.size(); i++) {        IlineDataSet dataSet = dataSets.get(i);        if (!dataSet.isVisible() || !dataSet.isDrawCirclesEnabled() || dataSet.getEntryCount() == 0)            continue;        mCirclePaintInner.setcolor(dataSet.getCircleHolecolor());        transformer trans = mChart.gettransformer(dataSet.getAxisDependency());        mXBounds.set(mChart, dataSet);        int boundsRangeCount = mXBounds.range + mXBounds.min;        for (int j = mXBounds.min; j <= boundsRangeCount; j++) {            Entry e = dataSet.getEntryForIndex(j);            if (e == null) break;            mCirclesBuffer[0] = e.getX();            mCirclesBuffer[1] = e.getY() * phaseY;            trans.pointValuestopixel(mCirclesBuffer);            if (!mVIEwPortHandler.isInBoundsRight(mCirclesBuffer[0]))                break;            if (!mVIEwPortHandler.isInBoundsleft(mCirclesBuffer[0]) || !mVIEwPortHandler.isInBoundsY(mCirclesBuffer[1]))                continue;            if (scaledBitmaps[i] != null) {                c.drawBitmap(scaledBitmaps[i],                        mCirclesBuffer[0] - scaledBitmapOffsets[i],                        mCirclesBuffer[1] - scaledBitmapOffsets[i],                        mRenderPaint);            }        }    }}private Bitmap scaleImage(int radius) {    return Bitmap.createScaledBitmap(image, radius, radius, false);}

希望这对某人有帮助.

总结

以上是内存溢出为你收集整理的android-在LineChart上显示图像而不是圆形全部内容,希望文章能够帮你解决android-在LineChart上显示图像而不是圆形所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1095238.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存