1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

TextView Wrap Performance Problem

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von MichaelS, 16.07.2012.

  1. MichaelS, 16.07.2012 #1
    MichaelS

    MichaelS Threadstarter Fortgeschrittenes Mitglied

    Beiträge:
    370
    Erhaltene Danke:
    51
    Registriert seit:
    14.08.2009
    Hallo zusammen,

    ich habe folgendes Problem:
    wenn ich in einter Listview eine TextView habe, die den Text umbrechen soll.
    Wird die Performance beim Scrollen der Listview deutlich langsamer und ruckelt :(
    Sobald ich nur ein Text reinmache, der nicht umgebrochen werden muss, geht es super schnell...

    Layout ist so aufgebaut, dass ich links ein Bild habe und rechts die Textview.
    Das Bilder hat eine feste Größe und die Textview nimmt den Rest.

    Wäre super, wenn jemand eine Idee hätte, das Problem zu lösen! :drool:

    Gruß
    Michael
     
  2. swordi, 16.07.2012 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
  3. MichaelS, 16.07.2012 #3
    MichaelS

    MichaelS Threadstarter Fortgeschrittenes Mitglied

    Beiträge:
    370
    Erhaltene Danke:
    51
    Registriert seit:
    14.08.2009
    das bringt mir leider nichts :( das ist schon klar, dass man die views mitm holder wieder verwendet ;)

    es geht darauf, dass du eine TextView hast mit einer dynamischen Breite un der Text aber deutlich länger und die TextView den Text umbrechen soll. Durch das Umbrechen wird die Listview extrem langsam beim scrollen.

    Der ursprüngliche Beitrag von 11:50 Uhr wurde um 13:09 Uhr ergänzt:

    meine einzige spontane idee wäre ein fiesen hack über ne webview zu machen =/
    sprich das wrappen der webview überlassen aber webview in ner liste einbauen halte ich ebenso für kritisch :D

    ich hoffe jemand hat eine idee :D
     
  4. Tom299, 16.07.2012 #4
    Tom299

    Tom299 Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    Hast du mal zum Testen das Laden der Bilder deaktiviert, so daß du sicher sein kannst, daß es wirklich an der TextView und dem Textumbruch hängt?
     
  5. MichaelS, 16.07.2012 #5
    MichaelS

    MichaelS Threadstarter Fortgeschrittenes Mitglied

    Beiträge:
    370
    Erhaltene Danke:
    51
    Registriert seit:
    14.08.2009
    jeps hab ich schon ausprobiert. kannst es ganz einfach nachbauen :)
    Listview mit einer textview und diese auf match lassen und dann ein content rein, der umgebrochen werden muss.

    sobald du scrollst, ruckelt es =(

    hätte es auch nicht gedacht, bevor ich es ausprobiert hab =/
     
  6. MichaelS, 17.07.2012 #6
    MichaelS

    MichaelS Threadstarter Fortgeschrittenes Mitglied

    Beiträge:
    370
    Erhaltene Danke:
    51
    Registriert seit:
    14.08.2009
    So nach viel Zeit und ausprobieren, habe ich nun doch eine eigene Lösung gefunden ;)
    Ich render das Control in nen Bitmap und überschreib die Draw Methode von der TextView und rendere da nur das Bitmap. Somit werden Layout-veränderungen nicht mehr genommen, aber brauche ich in dem fall nicht :)
    PHP:
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.graphics.Canvas;
    import android.util.AttributeSet;
    import android.widget.TextView;

    public class 
    CanvasTextView extends TextView {

        public 
    CanvasTextView(Context context) {
            
    super(context);
            
    init();
        }
        public 
    CanvasTextView(Context contextAttributeSet attrs) {
            
    super(contextattrs);
            
    init();
        }
        public 
    CanvasTextView(Context contextAttributeSet attrsint defStyle) {
            
    super(contextattrsdefStyle);
            
    init();
        }

        private 
    Bitmap _cache null;
        
        private 
    void init() {
            
    setDrawingCacheEnabled(true); 
        }
        
        @
    Override
        
    protected void onDraw(Canvas canvas) {
            if (
    _cache == null) {
                
    super.onDraw(canvas);
                
    _cache getDrawingCache();
            }
            
    canvas.drawBitmap(_cache00null);
        }
        
    }


    Der ursprüngliche Beitrag von 10:29 Uhr wurde um 11:59 Uhr ergänzt:

    Habe leider noch Probleme mit dem aktualisieren von setDrawingCacheEnabled hat da jemand erfahrungen?
     

Diese Seite empfehlen