私のアプリケーション用のギャラリーを構築しようとしています。いくつかのチュートリアルとスタックオーバーフローに続いて、私は最終的にギャラリーを作りました。私はグライドを使って画像を設定していますので、メモリが壊れたり、すべての問題が発生することはありません。唯一の問題は、私が脱出するときに、画像がそのビューに表示されるのと同じくらい速くビューに設定されないことです。ここにはgifがあります。だから私は、画像ビューが設定されている間、リサイクラーのプレースホルダーかバックグラウンドを見ることになる。飛行速度に応じて、これは500-1000msの間続くことがあります。しかし、それはギャラリーが悪く見えるようにするのに十分です。これは、飛行機を上下にスクロールするときに発生します。私の知る限りでは、これはグライドがキャッシュから画像を解放するためです。何か解決策はありますか? ここに私のコードです。グリッドレイアウトのRecyclerviewでのグライドキャッシュ管理
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>
ここでは、私は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);
は、私はSE午前方法ですアダプタ内めの設定のImageViewの:
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);
私は可能な解決策を教えてください。
P.S:gifはフレームレートが低く、ゆっくりと飛ぶように見えますが、そうではありません。