Einstellen des Bildhintergrunds in SurfaceView, wodurch ein schwarzer Bildschirm angezeigt wird

Okay, ich versuche den Hintergrund eines SurfaceView auf eine JPG-Datei einzustellen. Aber es scheint nicht zu wollen, das Bild zu zeichnen, und alles, was ich bekomme, ist ein schwarzer Bildschirm.

Hier ist mein Code:

    public class FloorplanActivity extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    MapView mapView = new MapView(getApplicationContext());
    setContentView(mapView);


}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.floorplan, menu);
    return true;
}

class MapView extends SurfaceView{

    Rect testRectangle1 = new Rect(0, 0, 50, 50);
    Bitmap scaled;
    int x;
    int y;

    public MapView(Context context) {
        super(context);

    }

    public void surfaceCreated(SurfaceHolder arg0){
        Bitmap background = BitmapFactory.decodeResource(getResources(), R.drawable.floorplan);
        float scale = (float)background.getHeight()/(float)getHeight();
        int newWidth = Math.round(background.getWidth()/scale);
        int newHeight = Math.round(background.getHeight()/scale);
        scaled = Bitmap.createScaledBitmap(background, newWidth, newHeight, true);
    }

 public void onDraw(Canvas canvas) {
        canvas.drawBitmap(scaled, 0, 0, null); // draw the background
    }

Ich bin mir nicht sicher, warum das "Grundriss" -Bild, das ich im Ordner drawable-mdpi gespeichert habe, nicht gezeichnet wird.

Hat jemand Vorschläge?

Vielen Dank.

BEARBEITEN: Nach dem Debuggen mit Haltepunkten sieht es aus, als würde die "skalierte" Variable aus irgendeinem Grund zu "Unendlich", und als solche werden die Variablen newWidth und newHeight kleiner als 0 und die Anwendung stürzt ab.

Dies ist nur der Fall, wenn ich die gesamte Oberfläche in den Konstruktor schiebe. Wenn ich den Code so lasse, wie er ist, ist nichts anderes möglich, als einen schwarzen Bildschirm anzuzeigen.

Keine Ahnung, warum das so ist ...

Antworten auf die Frage(1)

Ihre Antwort auf die Frage