Jetzt kostenlos registrieren. Mitglieder surfen ohne Werbung auf Android-Hilfe.de!
Zurück   Android-Hilfe.de > Android Developer > Android App Entwicklung

Canvas Bitmap Problem

Das Thema "Canvas Bitmap Problem" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 21.06.2011, 16:42   #1 (permalink)
Neuer Benutzer

Registriert seit: 21.06.2011
Beiträge: 8
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
Standard Canvas Bitmap Problem

Hallöchen Freunde des günen Manschgals!


Ich war bisher nur leser von android-hilfe.de
Jedoch komme ich jetzt mit lesen (inkl. google) nicht weiter

hier mein Problem:

Ich bin stolzer Besitzer eines Nexus S's und entwickle darauf schon ein paar Wochen. (Auflösung: 480x800)
Wenn ich nun eine bmp-datei mit 480x480 in eine imageview packe, sieht das ganze sehr gut aus.
wenn ich jedoch das ganze mit canvas und drawBitmap versuche, is das bild um das 1,5-fache größer,
geht sozusagen aus dem rechten bildrand heraus, erst wenn ich es auf 320x320 skaliere (dynamisch oder per hand mit gimp)
schließt es mit dem rechten bildrand ab, jedoch etwas verschwommen (klar, es gehen ja etliche pixel verloren)

Ich hoffe einer von euch hat ne idee dazu, habe schon vieles ausprobiert (z.B. mit densities)
error ist offline   Mit Zitat antworten
Alt 22.06.2011, 07:36   #2 (permalink)
Android Experte

Modell: HTC Hero

Registriert seit: 14.10.2009
Beiträge: 612
Abgegebene Danke: 18
Erhielt 42 Danke für 40 Beiträge
Standard AW: Canvas Bitmap Problem

Poste mal deine Souirces - XML Layouts and was du mit Bitmap im Java machst
__________________
_____________________________________________
Meine apps: http://www.pribluda.de/android
Suche Schriftmuster von Prepaid-Auflade-Bons
ko5tik ist offline   Mit Zitat antworten
Alt 22.06.2011, 09:04   #3 (permalink)
Neuer Benutzer

Registriert seit: 21.06.2011
Beiträge: 8
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
Standard AW: Canvas Bitmap Problem

also gut:

mit imageview so:

<ImageView
android:src="@drawable/pic01"
android:adjustViewBounds="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>

und mit canvas so:

eigenes Panel für canvas:
public class CanPanel extends SurfaceView implements SurfaceHolder.Callback{
welches ich so in einem activity einfüge:

<com.example.android.helloand.Panel
android:id="@+id/CanPanel01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxHeight="100px">
</com.example.android.helloand.Panel>


mit dessen onDraw-methode:
public void onDraw(Canvas canvas) {

Bitmap pic01 = BitmapFactory.decodeResource(getResources(),R.draw able.pic01);

canvas.drawColor(Color.BLACK);
canvas.drawBitmap(pic01, 0, 0, null);
}


wenn dir der ganze sourcecode weiterhilft, sag bescheid, dann lad ich den ganz hoch
error ist offline   Mit Zitat antworten
Alt 22.06.2011, 20:24   #4 (permalink)
Android-Hilfe.de Mitglied

Registriert seit: 10.08.2010
Beiträge: 97
Abgegebene Danke: 5
Erhielt 31 Danke für 24 Beiträge
Standard AW: Canvas Bitmap Problem

Das hat mit dem Code wenig zu tun. Da schlägt die Auto-Skalierung von Android zu. Genaues dazu findest Du hier.

Pack die Grafik einfach mal in einen Folder mit dem Namen drawable-nodpi statt in den normalen drawables Folder, dann kommt sie genau so raus wie Du sie reingepackt hast.
wilco ist offline   Mit Zitat antworten
Alt 23.06.2011, 10:13   #5 (permalink)
Erfahrener Benutzer
 
Benutzerbild von funcoder

Modell: SGS2 + HTC Hero

Registriert seit: 15.08.2009
Beiträge: 225
Abgegebene Danke: 2
Erhielt 36 Danke für 29 Beiträge
funcoder eine Nachricht über ICQ schicken funcoder eine Nachricht über Skype™ schicken
Standard AW: Canvas Bitmap Problem

Mh ersetze doch zuerstmal folgende XML-Definition für deine View:

<com.example.android.helloand.Panel
android:id="@+id/CanPanel01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>

Da deine Grafik im drawable Verzeichnis liegt, liegt es an der screen-support Option in der Android-Manifest.xml ob du möchtest, dass Android dir deine Grafik automatisch skaliert oder ob du möchtest das du dich selbst um die Skalierung kümmerst.

In deinem Falle sollte ja keine automatische Skalierung durch Android stattfinden. Folglich solltest du in der Manifest XML folgendes aufnehmen.

<supports-screens
android:resizeable="true"
android:smallScreens="true"
android:largeScreens="true"
android:normalScreens="true"
android:anyDensity="true">
</supports-screens>

Das bedeutet soviel, dass deine App für alle Screentypen funktioiert und dein Programmcode selbst um die Skalierung kümmert.

Deine Grafik kannst auf diese Weise problemlos im drawable Verzeichnis liegen lassen.
__________________
funcoder ist offline   Mit Zitat antworten
Alt 23.06.2011, 10:17   #6 (permalink)
Neuer Benutzer

Registriert seit: 21.06.2011
Beiträge: 8
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
Standard AW: Canvas Bitmap Problem

danke für den tipp

konnte damit aber das problem leider nicht lösen : /
das bitmap-file ins verzeichnis drawable-nodpi zu packen hat keinen unterschied gemacht

edit:
@funcoder

oh , hab dein post gar nicht gesehen.. moment
error ist offline   Mit Zitat antworten
Alt 23.06.2011, 10:37   #7 (permalink)
Neuer Benutzer

Registriert seit: 21.06.2011
Beiträge: 8
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
Standard AW: Canvas Bitmap Problem

so, ich habs jetzt so ausprobiert wie du es gemeint hast funcoder, jedoch wird das bild immer noch stark skaliert, ich wüsst nicht was ich falsch gemacht haben könnte nach deiner anweisung
error ist offline   Mit Zitat antworten
Alt 23.06.2011, 11:05   #8 (permalink)
Erfahrener Benutzer
 
Benutzerbild von funcoder

Modell: SGS2 + HTC Hero

Registriert seit: 15.08.2009
Beiträge: 225
Abgegebene Danke: 2
Erhielt 36 Danke für 29 Beiträge
funcoder eine Nachricht über ICQ schicken funcoder eine Nachricht über Skype™ schicken
Standard AW: Canvas Bitmap Problem

Okay, langsam wird es echt merkwürdig

Eine Idee habe ich noch:

Rect rect = new Rect(0, 0, pic01.getWidth(), pic01.getHeight());
canvas.drawBitmap(pic01, rect, rect, new Paint());

Das recht-Objekt nimmt die Ausmaße deiner Grafik an und diese wird 2x angegeben in der drawBitmap-Methode. Beim ersten mal stellt dies die Source-Quelle dar. Also die gesamte Grafik. Beim zweiten Mal stellt diese das Target dar. Deine Canvas-Leinwand. Bei beiden male verwendet er die exakten Bitmap Ausmaße. Sollte die Skalierung immer noch erfolgen ist die automatische Skalierung von Android definitiv aktiviert und zudem die Fehlerquelle.
Lass dir zusätzlich mal die Werte von pic01.getWidth() und getHeight() wiedergeben. Entsprechen diese die realen Ausmaße der Grafik?
__________________
funcoder ist offline   Mit Zitat antworten
Alt 23.06.2011, 15:08   #9 (permalink)
Neuer Benutzer

Registriert seit: 21.06.2011
Beiträge: 8
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
Standard AW: Canvas Bitmap Problem

nein das hat leider auch keinen unterschied gemacht : /
die ausmaße waren 360x360, obwohl das bild 480x480 besitzt

bin schon ein wenig am verzweifeln

hat einer eine alternative wie ich bitmaps mit canvas darstelle? vl. ist auch die art wie ich es tue einfach fehlerhaft....
error ist offline   Mit Zitat antworten
Alt 23.06.2011, 21:18   #10 (permalink)
Android-Hilfe.de Mitglied

Registriert seit: 10.08.2010
Beiträge: 97
Abgegebene Danke: 5
Erhielt 31 Danke für 24 Beiträge
Standard AW: Canvas Bitmap Problem

Gegen welche SDK Version baust Du denn die App? Die ganzen Auto-Skalierungsoptionen haben sich mit Version 1.6 stark geändert.

Und hast Du Deine Bitmap auch aus dem regulären "drawable" Verzeichnis entfernt, d.h. sichergestellt dass sie ausschliesslich im "drawable-nodpi" zu finden ist?

Ansonsten kannst Du die Bitmap natürlich von Hand skalieren: ganz regulär Deine Bitmap erzeugen, und diese dann in eine neue skalieren über Bitmap.createScaledBitmap.

Bei sämtlichen Bitmap Operationen immer höllisch auf das Speicher-Management aufpassen. Also sobald Du eine Bitmap nicht mehr brauchst (z.B. die Quell-Bitmap nachdem Du sie in eine skalierte umgewandelt hast) per release() freigeben und nacher eine Garbage Collection antriggern (System.gc()).
wilco ist offline   Mit Zitat antworten
Antwort

Stichworte
-

Themen-Optionen
Ansicht


Ähnliche Themen

Thema Autor Forum Antworten Letzter Beitrag
Bitmap Dimensionen / Größe einspunktnull Android App Entwicklung 9 07.03.2011 18:20
android.graphics.bitmap -> java.io.file computer_freak Android App Entwicklung 2 09.02.2011 19:49
bitmap in ImageButton vergrößern ben56a Android App Entwicklung 1 04.01.2011 11:47
byte array to Bitmap plaenker Android App Entwicklung 6 15.07.2010 15:03
Bitmap-Dimension und ImageView mago Android App Entwicklung 0 08.05.2010 23:56




Du liest gerade: "Canvas Bitmap Problem" unter "Android App Entwicklung" auf Android-Hilfe.de.


Powered by vBulletin®
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
© Android-Hilfe.de 2012 - All rights reserved.