0

Universal Image View を使用してアプリケーションに画像をロードしています。

これは私が実装した方法です

public static void setBitmapToAImageviewUIL(final ImageView imageView, String uriPath, String imageName)
{
  if(imageName != null && !imageName.equals(""))
  {
     //We use the local image as a temporary placeholder
     DisplayImageOptions options = new DisplayImageOptions.Builder()
           .showStubImage(Utilities.getDrawableResource(imageName))
           .cacheOnDisc()
           .cacheInMemory()
           .imageScaleType(ImageScaleType.EXACTLY)
           .bitmapConfig(Bitmap.Config.ARGB_8888)
           .build();

     imageLoader.displayImage(uriPath, imageView, options);
  }

}

ロジックは次のとおりです。ドローアブルにいくつかの画像があります。まず、ローカルのドローアブルをプレースホルダー (showStubImage) として使用します。Utilities.getDrawableResource()ドローアブルを再実行します。ダウンロードが完了すると、サーバーからダウンロードした画像が表示されます。

私の問題

プレースホルダーとして使用される一時画像は、サーバーからダウンロードされた画像よりも大きくなっています。そのため、最初はイメージが大きく、新しいイメージのダウンロードが完了すると縮小されます。imageView とまったく同じサイズにするにはどうすればよいですか?

手動のサイズ変更コードを避けて、同じサイズにしようとしています。ありがとう

PS:Utilities.getDrawableResource()を使用getResource().getIdentifier()して正しいドローアブルを取得します。

4

1 に答える 1

1

達成したいこと、および事前にどれだけの情報を持っているかに応じて、いくつかの異なるアプローチがあります。

1 つの方法は、イメージビューを XML で正確なサイズ (例: width:match_parent height:144dp) に設定し、サーバーとドローアブルの両方をその中でスケーリングすることです。

ダウンロードする前に画像サーバーのサイズにアクセスできる場合は、imageView layoutparams をそれらの正確な値に設定し、ドローアブルをそのサイズに変更できます (サーバーは完全に収まります)。

XML shape drawables や 9patch を使用してスケーリングを改善できると思いますが、それでも上記の 2 つの方法のいずれかが必要です。

于 2013-01-11T11:53:18.860 に答える