私のRecyclerView
の中にImageViewに関するいくつかの問題があります。私は漫画のビューアを作成しており、非常に長い画像を読み込んでいます。私は私の画像を8部にスライスして、私のImageView
がそれらを処理できるようにしました。問題は、RecyclerView
に画像を読み込むときです。Glideが画像をロードしている間にRecyclerViewのImageViewに寸法を設定させるにはどうすればいいですか?
私はGlide
を使用しており、Glide
にセグメント化された部分がロードされている場合、かなりの遅延があります。これは画像キャッシングのために好ましいものであり、非常にうまく機能するが、望ましくない効果を残す。それは非常に速く起こっているので、私は実際の画像を表示することはできませんが、私はASCII
を使用して、それを表現することができます
例えば、ここで、起動時に私のRecyclerView
です:あなたがここに気づくことができたようグライドは、
---------------Segment1
#.........................
#.........................
#.........................
#.........................
#.........................
#.........................
---------------Segment2
---------------Segment3
---------------Segment4
#.........................
#.........................
#.........................
#.........................
#.........................
#.........................
Segment2とSegment3の読み込みがまだ完了しておらず、実際にはSegment1とSegment4が一緒にステッチされています。突然のSegment2とSegment3の全てが存在しなくなりましたが、それはあまりうまくありません。
これをScrollView
に置き、ImageView
を動的に追加しても、同じ効果があります。私は複数の画面サイズを扱う必要があるので、明らかな理由からImageView
の幅と高さに一定のpx/dipを割り当てることはできません。
マイImageView
セットアップは次のようになります。私はImageView
に基づいて一定のピクセル幅/高さを割り当てた場合
private void bindSegment(ComicViewHolder holder, int position)
{
File file = mSegments.get(position);
Point imageSize = Constants.getImageSize(file);
Point screenSize = Constants.getScreenSize(mContext);
ImageView imageView = holder.mImageViewComic;
Glide.with(imageView.getContext())
.load(file.getAbsolutePath())
.override(imageSize.x , imageSize.y)
.crossFade(0)
.into(imageView);
}
:私はこのImageView
に結合したときにここで
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/imageview_comic"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="fitXY"
android:adjustViewBounds="true"/>
</LinearLayout>
は私がやっているものですgetLayoutParams()
経由で、私はそれを1つの電話ではなく、他の電話で動作させることができます。このようにサイズImageView
をハードコードできません。 Glide.override
は期待どおりに機能していないようです。 ImageView
は、現在ロードされているセグメント間のギャップを埋めるように、ロード中のイメージのサイズに対する現在のディメンションベースを知るために必要です。
どのような考えですか?
イエス・キリストが、これは働いていました。しかし、私のスケーリングされた画像は少し細長いですが、それほど効果的ではありません。 –