Warum hat die Leinwand nicht die gleiche Größe wie die Ansicht in onDraw? (Android)

Ich habe es versucht

@Override
protected void onDraw(Canvas canvas)
{
    Log.e("TEST", "canvas width: " + canvas.getWidth() + "");
    Log.e("TEST", "view width: " + this.getWidth() + "");

    Log.e("TEST", "canvas height: " + canvas.getHeight() + "");
    Log.e("TEST", "view height: " + this.getHeight() + "");
    super.onDraw(canvas);
    Log.e("TEST", "canvas width: " + canvas.getWidth() + "");
    Log.e("TEST", "view width: " + this.getWidth() + "");

    Log.e("TEST", "canvas height: " + canvas.getHeight() + "");
    Log.e("TEST", "view height: " + this.getHeight() + "");
}

Und das ist das Ergebnis:

canvas width: 320
view width: 480
canvas height: 533
view height: 300
canvas width: 320
view width: 480
canvas height: 533
view height: 300

Teil aus meiner main.xml

    android:layout_width="480px"
    android:layout_height="300px"

Laut meinen Log-Ausdrucken und einem Teil meiner XML-Datei ist die Ansichtsgröße korrekt. Mein Gerät ist 480x800 und sowohl die Breite als auch die Höhe geteilt durch die Log-Ergebnisse ergeben 1,5 (800/533 = 1,5 und 480/320 = 1,5), so dass es so aussieht, als ob ich Leinwand vom gesamten Bildschirm zum Zeichnen bekomme. Warum ist das so und warum ist es so klein und was soll ich tun, um auf normale Weise zu zeichnen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage