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
Fehler beim Download bestimmter Webseiten mit httpGet Android App Entwicklung Donnerstag um 15:36 Uhr
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
Fragen zu all den Layouts Android App Entwicklung 12.02.2018
Alertdialog mit Button erweitern Android App Entwicklung 02.02.2018
Bluetooth Kommunikation funktioniert ab Android 7 nicht mehr Android App Entwicklung 25.01.2018
android emulator root Android App Entwicklung 19.01.2018
[INFO/DISKUSSION] Google verschärft ab Mitte 2018 Regeln für Android Apps Android App Entwicklung 21.12.2017
Fehler bei der Kompilierung Android App Entwicklung 18.12.2017

Benutzer fanden diese Seite durch die Suche nach:

  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",