目录

7. 设置颜色

优质
小牛编辑
128浏览
2023-12-01

设置颜色

自从发布1.4.0之后,在以前版本中负责颜色设置的ColorTemplate对象不在需要。然而它依然保存了所有与定义的颜色数组(例如ColorTemplate.VORDIPLOM_COLORS)并且提供了方便的方法为了从资源(资源整数)转换颜色到真正的颜色。
取代了ColorTemplate,颜色现在能被直接指定在DataSet对象中,那将允许区分每种DataSet样式。

在这个简短的例子中,我们有两个不同的LineDataSet对象来代表两家公司的季度收入(在前面设置数据指南中提到的),我们现在想设置不同的颜色。

我们想做如下:

  • 公司1的值应该通过四个红色的不同的变量来呈现。
  • 公司2的值应该通过四个绿色的不同的变量来呈现。

代码看上去像下面:

  1. LineDataSet setComp1 = new LineDataSet(valsComp1, "Company 1");
  2. // sets colors for the dataset, resolution of the resource name to a "real" color is done internally
  3. setComp1.setColors(new int[] { R.color.red1, R.color.red2, R.color.red3, R.color.red4 }, Context);
  4. LineDataSet setComp2 = new LineDataSet(valsComp2, "Company 2");
  5. setComp2.setColors(new int[] { R.color.green1, R.color.green2, R.color.green3, R.color.green4 }, Context);

除了以上,有许多其他的方法来给数据集设置颜色。下面是完整的文档:

  • setColors(int [] colors, Context c): 设置颜色应该被用在数据集前面,只要数据集表示的i项数大于颜色数组的大小,颜色将被重用。你能使用”new int[] { R.color.red, R.color.green, … }” 来给这个方法提供颜色。在内部,颜色通过使用getResources().getColor(…)来获取。
  • setColors(int [] colors): 设置颜色应该被用在数据集之前,只要数据集表示的i项数大于颜色数组的大小,颜色将被重用。确保颜色应经被准备好(通过调用getResources().getColor(…))在增加它们到数据集之前。
  • setColors(ArrayList colors): 设置颜色应该被用在数据集之前,只要数据集表示的i项数大于颜色数组的大小,颜色将被重用。确保颜色应经被准备好(通过调用getResources().getColor(…))在增加它们到数据集之前。
  • setColor(int color): 设置一种或者唯一一种颜色应该被用于这个数据集之前。在内部,这将重新创建颜色数组并添加指定的颜色。

ColorTemplate例子:

  1. LineDataSet set = new LineDataSet(...);
  2. set.setColors(ColorTemplate.VORDIPLOM_COLORS);

如果没有颜色被设置对于数据集,默认颜色被使用