Android drawCircle兼容性问题

时间:2014-03-20 11:58:54

标签: android paint ondraw

我有自定义小部件 - 自定义频率闪烁的圆圈。在我的onDraw方法中,我画了一个圆圈。

@Override
protected void onDraw(Canvas c) {
  super.onDraw(c);
  if (data[mBitIndex] == '1'){
    c.drawCircle(c.getWidth() / 2, c.getHeight() / 2, c.getWidth() / 2, mPaint);
  }
}

这在android 4.2.1上运行完美,但是如果我在android 2.3上尝试这个,没有显示圆圈。我做了一些实验来确定问题

@Override
protected void onDraw(Canvas c) {
  super.onDraw(c);
  if (data[mBitIndex] == '1'){
    c.drawColor(mPaint.getColor());
  }
}

这正如我在两个版本的android上所期望的那样。但是,这是一个正方形,而不是圆形,我想要它。

如何画出方形,但不是圆形?我在互联网上搜索,但之前没有人遇到过这个问题,或者只是我的问题。我不明白,有谁能解释我哪里可能是错误的?

1 个答案:

答案 0 :(得分:0)

在Honeycomb(API 13)或更早版本中,硬件加速是错误的,无法绘制您的圆圈。 禁用视图的硬件加速:

setLayerType(View.LAYER_TYPE_SOFTWARE,null);

这对我有用。

或者将targetSDKVersion设置为14或更高(这可能会导致其他问题)。