3

私はピカソのライブラリを使用して、アプリケーションのグリッドビューに画像を読み込んでいますが、動作し、希望どおりに見えます。しかし、ユーザーは画像の読み込みが非常に遅いと言っています。これはネットワーク速度が遅いためであり、Picasso は非常に大きな画像全体を読み込んでから、画像ビューに合わせてサイズを変更していることを知っています。そこで、ほぼ 2 倍の速度で画像をロードするグライドを使用してみましたが、一部の画像では、ピカソのように構造を維持していません。たとえば、ピカソの読み込み画像は次のようになります

これ

グライドロードにはさまざまな状態がありますが、最初にロードされるのは次のとおりです

最初の状態

そして、スクロールすると次のようになります

これ

そして最終的に多くのスクロールの後、次のようになります

これ

これは、画像のサイズがすべて異なるためであると確信しています。また、プレースホルダー画像を別のサイズにすると効果があるようですが、知りたいのは、初期状態を維持するためにグライドを取得する方法、または方法です。ピカソの読み込みを速くするには?カラーフォーマットを 888 から 565 に下げると劇的な効果があると聞きましたが、2 セント貸してくれませんか? あらゆる提案をありがとう

編集

これは私のイメージビューです

<ImageView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:scaleType="fitXY"
    android:id="@+id/imageView"/>

これが私がピカソを呼んでいた方法です

                 Picasso.with(getActivity())
                .load(mThumbIds[position])
                .placeholder(R.drawable.placeholder)
                .fit()
                .into(imageView);

        return imageView;

これが私がグライドと呼んでいる方法です

                 Glide.with(getActivity())
                .load(mThumbIds[position])
                .asBitmap()
                .placeholder(R.drawable.placeholder)
                .diskCacheStrategy(DiskCacheStrategy.ALL)
                .fitCenter()
                .error(R.drawable.ic_photos)
                .into(imageView);

         return imageView;

それが重要な場合、これは私のグリッドビューです

    <GridView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_margin="5dp"
    android:id="@+id/gridview"
    android:numColumns="2"
    android:gravity="center"
    android:drawSelectorOnTop="true"
    android:listSelector="@drawable/ripple"
    android:stretchMode="columnWidth"
    >
4

1 に答える 1

5

デフォルトでは、Glide は画像の縦横比を維持しようとします。を使用する場合fitCenter()、これは画像全体を表示し、使用可能な領域の中央に配置することを意味します。に切り替えるcenterCrop()ことは、画像が使用可能な高さと幅の両方を確実に満たすための最初のステップです。

ただし、長年の問題にも直面してGridViewいます。すべての列の高さが同じであると想定しています。しかし、 の高さに を使用するwrap_contentと、ImageView各要素のサイズが、入力される高さに基づいて異なる方法で変更されます (Glide の観点から言えば、ImageView必要なだけ高くすることができると言ったことを思い出してください!)。

支配的な縦横比 (たとえば、16:9) を使用している場合は、この AspectRatioImageViewなどの固定縦横比ビューを使用できます。これは、列の幅に基づいて常に同じ高さを使用します (によって設定されますGridView)。もう 1 つのより複雑なオプションは、 RecyclerViewに切り替えてStaggeredGridLayoutManagerを使用することです。これにより、各画像の縦横比を維持し、行をずらして、各画像がスペースを埋め、その縦横比を維持できるようにします。

于 2015-08-16T21:33:22.203 に答える