fresco を使用して、リスト ビューで画像を表示しています。しかし、私には問題があります。
CENTER_CROP のような縦横比を維持する方法を使用して画像をスケーリングし、スケーリングされた画像の高さが simpledraweeview の高さよりも小さくなると、simple-Drawee-View はスケーリングされた画像のサイズに合わせて自動的にサイズ変更されません。
- 私は使用しようとしましたが、うまくいき
android:adjustViewBounds = true
ません。 以下の方法も試しましたが、スケーリングされた高さを計算するために使用したいscaleYは、画像の高さがsimpe-drawee-viewの高さよりも小さい場合でも1を返します
float[] f = new float[9] draweeView.getImageMatrix().getValues(f); float scaleY = f[Matrix.MSCALE_Y]; Log.d("App","scale y is "+ scaleY);
上記のコドレットは、以下のメソッドで使用されます
private void loadImage(Uri fileUri,final SimpleDraweeView draweeView,int myImageHeight){
draweeView.getLayoutParams().width = displayWidth;
int selectedSize = (myImageHeight > displayWidth)? displayWidth : myImageHeight;
draweeView.getLayoutParams().height= selectedSize;
GenericDraweeHierarchyBuilder builder = new GenericDraweeHierarchyBuilder(context.getResources());
GenericDraweeHierarchy hierarchy = builder
.setProgressBarImage(new CircleProgressBarDrawable())
.setActualImageScaleType(ScalingUtils.ScaleType.CENTER_CROP)
.build();
ImageRequest requestBuilder = ImageRequestBuilder.newBuilderWithSource(fileUri)
.setProgressiveRenderingEnabled(true)
.build();
//ImagePipeline imagePipeline = Fresco.getImagePipeline();
DraweeController controller = Fresco.newDraweeControllerBuilder()
.setOldController(draweeView.getController())
.setImageRequest(requestBuilder)
.build();
draweeView.setHierarchy(hierarchy);
draweeView.setController(controller);
float[] f = new float[9]
draweeView.getImageMatrix().getValues(f);
float scaleY = f[Matrix.MSCALE_Y];
Log.d("App","scale y is "+ scaleY);
}
結果: 赤い色は、単純な名宛人ビューの一部が画像で埋められていないことを示しています。これはスケール タイプ FIT_CENTER です。CENTER_CROP を使用すると、イメージがイメージ ビュー全体に表示され、イメージの一部が切り落とされてしまいます。
Q: スケーリングされた画像サイズを取得し、それを使用して simpleDraweeView のサイズを変更するにはどうすればよいですか? つまり、simpleDraweeView でサイズを調整するにはどうすればよいですか?
私はどんな助けにも感謝します。