我可以像这样画一个简单的油漆饼图吗?

Posted

技术标签:

【中文标题】我可以像这样画一个简单的油漆饼图吗?【英文标题】:Can I draw a simple paint pie chart like this? 【发布时间】:2014-10-07 14:22:00 【问题描述】:

我不是在寻找任何花哨的东西。我曾尝试遵循有关饼图和条形图的教程,但很多教程并未遵循我的应用程序的指南。在我的应用程序中,在我的一个片段布局中,我想简单地绘制一个包含两个值的饼图。

简单到 -

画圆

(%value) 的圆圈是红色的。 (other%value) 的圆圈是蓝色的。

不能这样吗?

【问题讨论】:

【参考方案1】:

当其他人提供它时,无需做腿部工作。

我强烈推荐 HoloGraphLibrary。每当我需要制作饼图时,我都会使用它。https://bitbucket.org/danielnadeau/holographlibrary/wiki/Home

它非常易于使用,而且看起来很棒。

【讨论】:

【参考方案2】:

如果你想要的只是你描述的图表,那么我认为添加任何库都是大材小用。这个非常简单的例子应该会给你一些想法。 setPercentage() 方法设置红色区域的大小;其余的将是蓝色的。请注意,没有实现异常处理,百分比应在 0 到 100 之间,包括 0 到 100。

public class MainActivity extends Activity

    SimplePieChart pie;

    @Override    
    protected void onCreate(Bundle savedInstanceState) 
    
        super.onCreate(savedInstanceState);

        pie = new SimplePieChart(this);
        pie.setPercentage(65);
        setContentView(pie);
    

    public class SimplePieChart extends View
    
        private RectF rect = new RectF();
        private Paint paint = new Paint();      
        private int percentage;

        public SimplePieChart(Context context)
        
            this(context, null);
        

        public SimplePieChart(Context context, AttributeSet attrs)
        
            super(context, attrs);
            paint.setStyle(Paint.Style.FILL_AND_STROKE);
        

        public void setPercentage(int percentage)
        
            this.percentage = percentage;
            invalidate();
        

        public int getPercentage()
        
            return percentage;
        

        @Override
        protected void onSizeChanged(int w, int h, int oldw, int oldh)
        
            super.onSizeChanged(w, h, oldw, oldh);
            if (w > h)
            
                rect.set(w / 2 - h / 2, 0, w / 2 + h / 2, h);
            
            else
            
                rect.set(0, h / 2 - w / 2, w, h / 2 + w / 2);
            
        

        @Override
        protected void onDraw(Canvas canvas)
        
            super.onDraw(canvas);

            canvas.drawColor(Color.WHITE);

            paint.setColor(Color.RED);
            canvas.drawArc(rect, 0, 360 * percentage / 100, true, paint);

            paint.setColor(Color.BLUE);
            canvas.drawArc(rect, 360 * percentage / 100, 360 - 360 * percentage / 100, true, paint);
                       
    

【讨论】:

以上是关于我可以像这样画一个简单的油漆饼图吗?的主要内容,如果未能解决你的问题,请参考以下文章

在画布上绘制(渐进式)油漆飞溅

用ggplot包画一个简单饼图

Android 中canvas 方法可以画出蜡烛图吗

如何在android画分析图(例如 柱状图、趋势图、饼图)

toolbox工具栏组件适用于饼图吗

excel饼图扇区颜色如何修改?