Ich versuche, eine Galerie für meine App zu erstellen. Nach einigen Tutorials und Stackoverflow habe ich es endlich geschafft, die Galerie zu machen. Ich verwende Glide, um Bilder zu setzen, also kein Problem mit dem Absturz von Speicher und allem. Das einzige Problem ist, dass Bilder nicht so schnell in ihre Ansichten versetzt werden, wie diese Ansichten angezeigt werden. Hier ist ein gif. So sehe ich die Platzhalter oder den Hintergrund der Recycleransicht, während die Bildansichten eingestellt werden. Abhängig von der Schleudergeschwindigkeit kann dies 500-1000ms dauern. Aber das reicht aus, um die Galerie schlecht aussehen zu lassen. Dies passiert, wenn ich Schleudern benutze, um nach oben oder unten zu scrollen. Dies liegt meines Wissens daran, dass Glide die Bilder aus dem Cache befreit. Gibt es eine Lösung dafür? Hier ist mein Code.Glide Cache-Verwaltung in Recyclerview mit Grid-Layout
activity_gallery:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_monuments"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".GalleryActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerview_gallery"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:alwaysDrawnWithCache="true"
android:clipToPadding="false"
android:scrollbars="vertical"
android:scrollbarStyle="insideOverlay"/>
</LinearLayout>
Hier ist, wie ich bin die Einrichtung recyclerview:
RecyclerView gridView = (RecyclerView)findViewById(R.id.recyclerview_gallery);
gridView.setHasFixedSize(true);
RecyclerView.LayoutManager layoutManager = new GridLayoutManager(getApplicationContext(),NUM_OF_COLUMNS);
gridView.setLayoutManager(layoutManager);
gridView.isDrawingCacheEnabled();
gridView.addItemDecoration(new MarginDecoration(GalleryActivity.this, NUM_OF_COLUMNS, GRID_PADDING, true));
gridView.setHasFixedSize(true);
gridView.setVerticalScrollBarEnabled(true);
gridView.setBackgroundColor(getResources().getColor(R.color.colorBlack));
GalleryAdapter galleryAdapter = new GalleryAdapter(GalleryActivity.this, GalleryActivity.this, ImageNamesList, columnWidth);
gridView.setAdapter(galleryAdapter);
Hier ist, wie ich bin se tting Imageview in Adapter:
viewHolder.galleryImage.setLayoutParams(new GridView.LayoutParams(imageWidth, imageWidth));
Glide.with(context)
.load(uri)
.asBitmap()
.placeholder(R.drawable.monument)
.centerCrop()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(viewHolder.galleryImage);
Bitte lassen Sie mich der möglichen Lösungen kennen.
S.: Das gif ist niedrige Bildrate und zeigt daher die langsame Schleuder, die nicht der Fall ist.