0

私は小さな問題に直面していると思います。私の問題は、 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);
    // }
}
4

1 に答える 1

1

この人がこれに対する解決策を得たかどうかはわかりません。ただし、以下の回答は、これに対する解決策をまだ探している人向けです。init 関数に以下の行を追加してください

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

これで針表示の問題が解決することを願っています

于 2014-06-12T15:01:18.850 に答える