RecyclerDie Hibenspiele

Ich lade 400×200 Bilder in RecyclerView, aber Scrollen ist laggy auf 2k Geräten. Ich benutze Picasso zum Laden von Bildern aus der Ressource.

Wie Sie in der Demo sehen können, sind Bilder auf 2k Bildschirm verschwommen, aber wenn ich höhere Auflösungsbilder lade, wird die Situation schlechter. Wie kann ich das beheben, ich lasse nicht mal großes Bild, sein 400×200?

  • Wie bekomme ich eine ClickableSpan in einem TextView?
  • Void ... params Bedeutung in Java-Funktionsdeklaration
  • Wie kann ich eine benutzerdefinierte Android-Tastatur machen?
  • Wie Druck Rechnungsbeleg mit Bluetooth-Thermodrucker drucken
  • (Smooth) ScrollToPosition funktioniert nicht ordnungsgemäß mit RecyclerView
  • Wie bekomme ich einen transparenten Hintergrund von webView für 4.0 Version
  • Demo

    Hier ist mein Code Card_view.xml

    <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:card_view="http://schemas.android.com/apk/res-auto" android:id="@+id/card_view" card_view:cardPreventCornerOverlap="false" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="8dp" card_view:cardCornerRadius="2dp" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:id="@+id/rel" > <ImageView android:id="@+id/cardimage" android:layout_width="match_parent" android:layout_height="wrap_content" android:scaleType="fitXY" android:src="@drawable/p7" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="title" android:paddingLeft="16dp" android:paddingRight="16dp" android:paddingTop="16dp" android:paddingBottom="24dp" android:textStyle="bold" android:textSize="24sp" android:id="@+id/cardtitle" android:layout_gravity="center_vertical" /> </LinearLayout> </android.support.v7.widget.CardView> 

    Myadapter Code

     public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ViewHolder> { private Context mContext; List<Flower> list = new ArrayList<>(); public CardAdapter(Context mContext, List<Flower> list) { this.mContext = mContext; this.list = list; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(parent.getContext()) .inflate(R.layout.card_view, parent, false); return new ViewHolder(itemView); } @Override public void onBindViewHolder(ViewHolder holder, int position) { holder.Flower=getItem(position); holder.cardtitle.setText(list.get(position).name); Picasso.with(mContext) .load(list.get(position).id) .placeholder(R.drawable.ic_launcher) .into(holder.cardimage); } @Override public void onAttachedToRecyclerView(RecyclerView recyclerView) { super.onAttachedToRecyclerView(recyclerView); } @Override public int getItemCount() { return list.size(); } public Flower getItem(int i) { return list.get(i); } public class ViewHolder extends RecyclerView.ViewHolder { ImageView cardimage; TextView cardtitle; Flower Flower; public ViewHolder(View itemView) { super(itemView); cardimage = (ImageView) itemView.findViewById(R.id.cardimage); cardtitle = (TextView) itemView.findViewById(R.id.cardtitle); } } } 

    UPDATE: Ich lade Bilder von der Ressource, ich lade nichts

    Hier ist mein Array

      private void initializeData() { flowers = new ArrayList<>(); flowers.add(new Flower("Flower 1", R.drawable.p8)); flowers.add(new Flower("Flower 2", R.drawable.p10)); flowers.add(new Flower("Flower 3", R.drawable.p11)); flowers.add(new Flower("Flower 4", R.drawable.p8)); flowers.add(new Flower("Flower 5", R.drawable.photo2)); flowers.add(new Flower("Flower 6", R.drawable.photo6)); flowers.add(new Flower("Flower 7", R.drawable.p12)); flowers.add(new Flower("Flower 8", R.drawable.p9)); flowers.add(new Flower("Flower 9", R.drawable.p8)); flowers.add(new Flower("Flower 10", R.drawable.p8)); flowers.add(new Flower("Flower 11", R.drawable.p8)); flowers.add(new Flower("Flower 12", R.drawable.p10)); } 

    UPDATE 2: Jungs Ich habe die meisten der Verzögerung durch die Einstellung Adapter.setHasStableIds (true), aber App ist immer noch laggy auf der ersten Scroll, während Bilder noch nicht geladen sind, wie man das beheben?

    UPDATE 3: Ich habe gerade versucht, Bilder aus dem Web zu laden und alles scheint glatt, wahrscheinlich gibt es ein Problem mit dem Laden von Bildern aus der Ressource.

    Ok, danke Jungs, ich werde meine Bilder aus dem Internet laden.

  • Verbergen Sie einen EditText und machen Sie ihn sichtbar, indem Sie auf ein Menü klicken
  • Android-Signierung mit Ant
  • Deinstallieren von Android ADT
  • Wie bekomme ich Toast in Android?
  • Unterschiede zwischen / sdcard / emuliert / 0 und / sdcard
  • Android Studio 0.4.2: Gradle Projekt Sync fehlgeschlagen Fehler
  • 6 Solutions collect form web for “RecyclerDie Hibenspiele”

    Ist RecyclerView.setHasFixedSize () auf true gesetzt? Ich bin nicht in der Lage, diese Verzögerung zu reproduzieren … können Sie bitte das ganze Projekt auf Git? Überprüfen Sie dies, vielleicht kann es Ihnen helfen: http://antonioleiva.com/recyclerview/

    Wenn Sie zwei oder mehr Recycler-Ansichten wie (RecyclerView und NestedView) verwenden, versuchen Sie dies

    recyclerView.setNestedScrollingEnabled(false);

    Quelle: Recyclerview innerhalb der verschachtelten Scrollview-Schriftrolle, aber nicht schnell scrollen wie normale Recyclerview oder Nested Scrollview

    Sie müssen die Bilder asynchron bekommen. Wie es jetzt ist, ist es gestattet, das Bild tatsächlich herunterzuladen.

    Lassen Sie die Bildansicht leer, wenn es erstellt ist, aber haben Sie eine Art von Zuhörer, um das Bild zu setzen, wenn es heruntergeladen wurde.

    Wenn Sie Recyclerview im vertikalen Modus verwenden und Ihre Aktivität andere ScrollView enthält, die Sie ScrollView haben, ScrollView Sie NestedScrollView anstelle von ScrollView .

    Wie in der Google-Dokumentation beschrieben NestedScrollView ist genau wie ScrollView, aber es unterstützt das Handeln als sowohl ein verschachteltes Scrolling-Elternteil und Kind auf beiden neuen und alten Versionen von Android. Das verschachtelte Scrollen ist standardmäßig aktiviert.

    Ich hatte laggy recyclerView Problem, wenn einer der textView innerhalb der recyclerView null Werte erhielt. Ich repariere das und mein Recycler.

    Ich denke, der Grund ist, dass Picasso Ihre Bilder cachiert, aber da Sie eine Liste von Ziehbaren haben, die Sie zusammen mit Ihrer App bündeln, müssen Sie nicht in der Theorie Ihre Bilder zwischenspeichern. Caching ist nur nützlich, wenn Sie das Bild aus dem Internet herunterladen und Sie wollen nicht, dass die App die Bilder jedes Mal, wenn Sie nach oben oder unten auf dem recyclerview wischen, herunterlädt.

    Ich würde die Art und Weise anpassen, wie Picasso funktioniert, indem man die Memorypolicy wechselt, also versuchen Sie es stattdessen:

      Picasso.with(getContext()).load(data.get(pos).getFeed_thumb_image()).memoryPolicy(MemoryPolicy.NO_CACHE).into(image); 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.