2

私は人名で画像を読み込むリストビューを持っています。リストビューには約538項目があります。私はURLから人のイメージを取得します。現在、私は次のことをやっている: -大きな画像ピカソで読み込む

Picasso.with(getContext()).load(url).resize(70,70).onlyScaleDown().into(im1);

URLに存在する画像は、一部の画像の大きさやロードに非常に大きいことは多くの時間がかかり、ロードしている間、それはまた、私の記憶を食べます。画像を効率的かつ迅速に読み込む際に助けてください。 1人は、次のURLで見ることができるため

例の画像: -

https://theunitedstates.io/images/congress/original/D000626.jpg

答えて

4

あなたは

Picasso 
    .with(context) 
    .load(imageUrl) 
    .resize(6000, 2000) 
    .onlyScaleDown() // the image will only be resized if it's bigger than 6000x2000 pixels. 
    .into(imageViewResizeScaleDown); 

それとも、fit()

Picasso 
    .with(context) 
    .load(imageUrl) 
    .fit() 
    // call .centerInside() or .centerCrop() to avoid a stretched image 
    .into(imageViewFit); 
を使用することができますサイズを変更する onlyScaleDown()を使用することができます

fit()はmeasuです。ターゲットImageViewのサイズを呼び出し、内部的にはresize()を使用して、イメージサイズをImageViewのサイズに縮小します。 fit()について知っておくべき2つのことがあります。まず、fit()を呼び出すと、ピカソはImageViewのサイズが測定できるまで待つ必要があるため、画像リクエストを遅らせることができます。次に、ImageViewをターゲットとしてfit()を使用することができます(後で他のターゲットを参照します)。

利点は、画像が品質に影響を与えることなく、可能な限り低い解像度であることです。分解能が低いと、キャッシュに保持するデータが少なくなります。これにより、アプリのメモリ占有量への画像の影響が大幅に軽減されます。要約すると、読み込み時間が少し短くてもメモリの影響が小さい場合、fit()は素晴らしいツールです。

+0

'' .centerInside() ''を追加する必要があります。そうしないと、指定したサイズにイメージのサイズが変更されます。 –

関連する問題