【发布时间】:2014-10-07 14:22:00
【问题描述】:
我不是在寻找任何花哨的东西。我曾尝试遵循有关饼图和条形图的教程,但很多教程并未遵循我的应用程序的指南。在我的应用程序中,在我的一个片段布局中,我想简单地绘制一个包含两个值的饼图。
简单到 -
画圆
(%value) 的圆圈是红色的。 (other%value) 的圆圈是蓝色的。
不能这样吗?
【问题讨论】:
标签: android layout fragment pie-chart
我不是在寻找任何花哨的东西。我曾尝试遵循有关饼图和条形图的教程,但很多教程并未遵循我的应用程序的指南。在我的应用程序中,在我的一个片段布局中,我想简单地绘制一个包含两个值的饼图。
简单到 -
画圆
(%value) 的圆圈是红色的。 (other%value) 的圆圈是蓝色的。
不能这样吗?
【问题讨论】:
标签: android layout fragment pie-chart
当其他人提供它时,无需做腿部工作。
我强烈推荐 HoloGraphLibrary。每当我需要制作饼图时,我都会使用它。
https://bitbucket.org/danielnadeau/holographlibrary/wiki/Home
它非常易于使用,而且看起来很棒。
【讨论】:
如果你想要的只是你描述的图表,那么我认为添加任何库都是大材小用。这个非常简单的例子应该会给你一些想法。 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);
}
}
}
【讨论】: