Android komisches Bitmap-Größe-Problem

Larsi

Mitglied
Hallo, ich bin neu hier :D
Habe schon unregistriert das Forum besucht, doch jetzt habe ich ein Problem, auf das ich keine Antwort finde.
Ist vieleicht ja auch ein peinlich einfaches Problem.
Naja, jetzt komm ich mal zum Problem:

Ich habe eine 50x50 Pixel große Bitmap (png-format).
Diese drawe ich dann einmal an position 50,50 und einmal an 100,50.
Merkwürdigerweise ist da aber Platz zwüschen. Wie kann das sein? Die Bitmap ist völlig ausgefüllt.
 

dzim

Top Contributor
Bitte das zugehörige Layout posten... Ansonsten ist es rein spekulativ.
Generell aber würde ich spontan vermuten, dass irgendein Padding oder Margin auf dem Parent oder so gesetzt ist.
 

Larsi

Mitglied
ähm was willst du jetzt genau haben?
das Layout ist immernoch der Standard, wo "Hello World!" steht.
der Code sieht so aus:
Java:
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.view.View;

public class GameView extends View{
	
	private Bitmap b_wall;
	//......

	public GameView(Context context) { //Das wird von der Main-klasse aus aufgerufen
	        super(context);
                b_wall = BitmapFactory.decodeResource(getResources(), R.drawable.wall);
	        //......
	}
	
	@Override
	protected void onDraw(Canvas canvas){
        	canvas.drawBitmap(b_wall, 50, 50, null);
        	canvas.drawBitmap(b_wall, 100, 50, null);
                //.......
                invalidate();
	}
 

dzim

Top Contributor
Ähm... Schön, dass du es voll programatisch versuchst, aber hier ein Tipp von mir: Lass es! Nutze XML-Layouts und die PNG-Resourcen mit ImageViews.
Ich würde dir gern ein Beispiel geben, aber mein Eclipse spinnt (mal wieder) herum, daher ist für mich jetzt Wochenende angesagt. Vielleicht hab ich am WE Lust, ansonsten musst du dich bis nächste Woche gedulden. :)
 

Larsi

Mitglied
Nein, XML wird nicht gehen.....
das wird ein Spiel, mit Player und allem drum und dran.....
Es funktioniert auch alles, aber die Wände haben lücken und das sieht doof aus.
 

dzim

Top Contributor
Ah ok, das wusste ich natürlich nicht und sage dann einfach mal: Respekt! :) Ich vermeide wenn möglich, selbst etwas per draw* auf einem View zeichnen zu müssen ;-)

Einen Tipp aber trotzdem noch: Es ist keine gute Idee Daten von einem der "speziellen" drawable-Ordner zu verschieben. Der Sinn ist ja eben, dass du verschiedene Drawables für die unterschiedlichen Geräte lieferst. Wenn es jetzt bei dir im mdpi gut aussieht, kann es auf einem [x]*hdpi absolut hässlich werden. Liefere also entsprechend diese Resourcen für *alle* wichtigen Auflösungen mit - und hdpi besitzen sehr viele (Galaxy S3 und ähnliche...).
 

Larsi

Mitglied
ja, aber wie soll ich das denn sonst machen?

Es ist ein Spiel!

ein spiel braucht ja wohl nen View, wo bitmaps gezeichnet werden oder?

Und ja, hast recht, das nur in eimen speziellen ordner zu haben war auch nicht so schlau, denn auf dem handy ist es jetzt normal aber auf dem emulator überlaget sich das jetzt.... werde ich aber hinkriegen...
 

dzim

Top Contributor
Ich sag ja gar nicht, dass du es anders machen kannst (oder solltest), aber du musst halt bedenken, dass dir das Problem früher oder später über den Weg laufen wird.

Entweder du forcierst das Spiel in einer Auflösung (was auch blöd ist, wenn man die unterschiedlichen Seitenverhältnisse der vielen Displays bedenkt), skalierst alle Bilder auf von dir vorgegebene (Pixel?)Werte (dann würde vielleicht ein Format reiche) oder aber du musst die Bilder halt in den verschiedenen Varianten anbieten.
Alternativ - da es ja ein Spiel werden soll - kannst du dir ja einmal libgdx anschauen - prominenteste Verwendung findetr diese OpenSource-Bibliothek ist wahrscheinlich in dem Android-Exklusiven Augmented-Reality-Spiel Ingress (so mein letzter Stand).
Vielleicht findest du da ein paar Ansätze die dir weiterhelfen.
 

Neue Themen


Oben