1. Mitglieder surfen ohne Werbung auf Android-Hilfe.de! ✔ Jetzt kostenlos Mitglied in unserer Community werden.
  1. Vaio, 26.03.2013 #1
    Vaio

    Vaio Threadstarter Neuer Benutzer

    Hi,
    ich habe mir in Gimp ein Bild als Hintergrund für meine SurfaceView erstellt; im Grunde genommen ein Farbvelauf mit etwas Rauschen (eigentlich nicht wirklich sichtbar!). Diese Png zeichne ich dann als Bitmap auf die Canvas der SurfaceView. Funktioniert soweit; allerdings besteht ein gewaltiger Unterschied in der Qualität der Bilder, so sind auf meinem Handy einzelne breite Ringe sichtbar, das Rauschen ist stark sichtbar und außerdem ist der Farbverlauf teilweise grünlich. Das selbe Bild sieht in der Android-Gallerie schon besser aus (keine Ringe, keine grüne Farbe, allerdings immernoch sichtbares Rauschen). Ich wollte eigentlich ein Screenshot der SurfaceView hochladen, nur sieht selbiger auf dem PC fast wieder wie das Original aus??? Wie bekomme ich die Png denn möglichst ohne solche Qualitätsverluste in meine SurfaceView?
    Im Anhang das Original...
    MfG Vaio
    PS: Ich besitze ein Galaxy SIII
     

    Anhänge:

  2. v Ralle v, 26.03.2013 #2
    v Ralle v

    v Ralle v Android-Lexikon

    Wie liest du die png Datei ein? Dithering oder eine falsche Config wird dein Problem sein. Probier mal das folgende Snippet aus:

    Code:
    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inPreferredConfig = Bitmap.Config.ARGB_8888;
    options.inDither = false;
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.image, options);
    Es empfiehlt sich auch stark (gerade Übergänge und Verläufe) als .xml Datei anzulegen. Spart wesentlich Platz. Nachteil: dein Rauschen wäre weg. Drawable Resources | Android Developers
     
    Zuletzt bearbeitet: 27.03.2013
  3. Vaio, 27.03.2013 #3
    Vaio

    Vaio Threadstarter Neuer Benutzer

    Hmm, also mit deinem Snippet war die Qualität jetzt auch nicht sonderlich besser, evtl liegt es am Farbchannel von Android... Naja, ich habe mich mal an der Implementation via Drawable versucht und habe dazu noch eine dumme Frage: Wie soll ich das Drawable denn jetzt in meine Canvas zeichnen ? :D

    MfG Vaio
     
  4. v Ralle v, 28.03.2013 #4
    v Ralle v

    v Ralle v Android-Lexikon

    Was meinst du mit Farbchannel? In der Konfiguration hast du das maximale drin, was Android bietet. Jeder Kanal hat pro Pixel 8 Bit. Speicherst du das Bild vorher in 64 oder sogar 128 Bit ab?!

    Bei deiner zweiten Frage einfach mal suchen: android - Drawable image on a canvas - Stack Overflow
     
  5. Vaio, 28.03.2013 #5
    Vaio

    Vaio Threadstarter Neuer Benutzer

    Das habe ich schon so ausprobiert. Allerdings wird beim Zeichnen der Bitmap die folgende Fehlermeldung geworfen:
    Code:
    NullPointerException
    at android.graphics.canvas.throwIfRecycled(Canvas.java:1025)
    at ...canvas.drawBitmap(Canvas.java:1065
    Die Bitmap lade ich so:
    Code:
    bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.background);
    ,
    wobei das Shape in der Datei background.xml gespeichert ist.
     
  6. v Ralle v, 28.03.2013 #6
    v Ralle v

    v Ralle v Android-Lexikon

    Hast du die Bitmap vorher recycled? Sehr wahrscheinlich ist das der Fall...
     
  7. Vaio, 28.03.2013 #7
    Vaio

    Vaio Threadstarter Neuer Benutzer

    Diesbezüglich hatte ich extra nochmal den SourceCode durchsuchen lassen. Und außer dem Laden, dem Zeichnen und der Deklaration gibt es nichts. Und da das Laden in der OnCreate-Methode geschieht sollte eigentlich ausgeschlossen sein, dass die Bitmap recycelt wurde. Außer das Laden an sich hätte nicht funktioniert, warum auch immer ... Kann es eventuell an dem XML-File selber liegen ?
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" 
        android:shape="rectangle">
        <gradient
            android:startColor="#FFFF0000"
            android:endColor="#80FF00FF"
            android:angle="45"/>
        <padding android:left="7dp"
            android:top="7dp"
            android:right="7dp"
            android:bottom="7dp" />
        <corners android:radius="8dp" />
    
        
    
    </shape>
     
  8. v Ralle v, 28.03.2013 #8
    v Ralle v

    v Ralle v Android-Lexikon

    Deine XML Datei schaut gut aus. Ich weiß ehrlich gesagtnun nicht, wo dein Problem liegen soll. Ich rate ja bereits ins Blaue. Schau dir das nochmal an. Besonders das Snippet beim ShapeDrawable könnte dir helfen: Canvas and Drawables | Android Developers
     
  9. Vaio, 28.03.2013 #9
    Vaio

    Vaio Threadstarter Neuer Benutzer

    Also mit folgendem Code gibt es keine Fehlermeldung mehr, allerdings bleibt der Hintergrund schwarz. Irgendwas scheint also immer noch nicht zu funktionieren:
    Code:
    private Drawable background;
    ...
    background = getResources().getDrawable(R.drawable.background);
    ...
    background.draw(canvas);
    
     
  10. Vaio, 30.03.2013 #10
    Vaio

    Vaio Threadstarter Neuer Benutzer

    Ok, scheinbar habe ich jetzt den Fehlerursprung gefunden. Meine statische Funktion zum Laden der Bitmap funktioniert nicht (warum dass jetzt so ist, weis ich nicht. Evtl weil static ??) . Sieht folgender Maßen aus:
    Code:
    public static Bitmap getBitmapFromRessource(Context context, int ID){
            Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), ID);
            if(bitmap == null)
                throw new RuntimeException("error loading bitmap ");
            return bitmap;
        }
    Die RuntimeException habe ich jetzt erst hinzugefügt. Was ich seltsam finde ist, dass das ja eigentlich die einfachste gängige Methode ist ...?
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
Android Studio richtig installieren Android App Entwicklung 10.07.2018
Android Studio - App stürtzt immer ab Android App Entwicklung 24.06.2018
Android Studio: Auf Datenbank mit zwei Spinner zugreifen. Android App Entwicklung 07.06.2018
Android Studio: Failed to chmod Android App Entwicklung 06.06.2018
App wird nach start sofort beendet! Android App Entwicklung 21.05.2018
Mit Webview.findallasync ein Wert überprüfen -Hilfe Android App Entwicklung 29.04.2018
Fehler beim Download bestimmter Webseiten mit httpGet Android App Entwicklung 19.04.2018
Daten von Android Wear zur Handy-App senden geht nicht Android App Entwicklung 03.04.2018
Benötigte Zugriff ausschalten Android App Entwicklung 07.03.2018
Warum Stürtzt meine App ab? (Beim Öffnen von content_3) Android App Entwicklung 27.02.2018

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. powerpoint hintergrund

    ,
  2. hintergrund powerpoint

    ,
  3. hintergrund android

    ,
  4. handy hintergrund schwarz,
  5. schwarz 1280x720,
  6. power point hintergrund,
  7. schwarz weiss powerpoint hintergrund,
  8. hintergrund,
  9. samsung galaxy s6 liest kein png,
  10. handyhintergrund farbverlauf,
  11. hintergrund für powerpoint
Du betrachtest das Thema "Qualitätsverlust einer PNG beim Transportieren auf ein Android-Phone" im Forum "Android App Entwicklung",
  1. Android-Hilfe.de verwendet Cookies um Inhalte zu personalisieren und dir den bestmöglichen Service zu gewährleisten. Wenn du auf der Seite weitersurfst stimmst du der Cookie-Nutzung zu.  Ich stimme zu.