画布在特定设备上不可见(One X)

时间:2012-10-16 01:25:04

标签: java android

我认为我面临一个小问题。我的问题是我正在根据http://mindtherobot.com/blog/272/android-custom-ui-making-a-vintage-thermometer/绘制速度表。并且针在我拥有的所有设备上都可见,但在HTC One X上没有。在检查时,我发现画布密度(canvas.getDensity())返回为0.这可能是它不可见的原因吗?还在具有相同OS(4.0.4)的S3上进行了测试。在那里工作得很好。

    handPath = new Path();
    handPath.moveTo(0.5f, 0.5f + 0.0f);
    handPath.lineTo(0.5f - 0.010f, 0.5f + 0.0f - 0.00f);
    handPath.lineTo(0.5f - 0.002f, 0.5f - 0.22f);
    handPath.lineTo(0.5f + 0.002f, 0.5f - 0.22f);
    handPath.lineTo(0.5f + 0.010f, 0.5f + 0.0f - 0.00f);
    handPath.lineTo(0.5f, 0.5f + 0.0f);
    handPath.addCircle(0.5f, 0.5f, 0.05f, Path.Direction.CW);


    private void drawHand(Canvas canvas) {
    // if (handInitialized) {
    float handAngle = degreeToAngle(handPosition);
    // float handAngle = 0;
    canvas.save(Canvas.MATRIX_SAVE_FLAG);
    canvas.rotate(handAngle, 0.5f, 0.5f);
    canvas.drawPath(handPath, handPaint);
    canvas.restore();
    float scale = getScaled(canvas,canvas.getWidth());
    canvas.scale(scale, scale);
    canvas.drawCircle(0.5f, 0.5f, 0.01f, handScrewPaint);
    // }
}

1 个答案:

答案 0 :(得分:1)

我不知道这个人是否得到了解决方案。但是,下面的答案是针对仍在寻找解决方案的人们。请在init函数中添加以下行

@TargetApi(11) private void init() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { setLayerType(View.LAYER_TYPE_SOFTWARE, null); } ........ ........ ........ }

我希望这能解决针显示问题