2017-05-01 8 views
2

私のアプリでは、各プレースホルダのサイズがxmlに設定され、画像がダウンロードされた後にサイズ変更ImageViewの高さが表示されます。サーバから画像を正しくダウンロードして表示する

ImageViewにダウンロードする画像サイズを取得するには、Facebookアプリケーションのライブフィードのような同じプレースホルダサイズを使用するにはどうすればよいですか?サーバーからダウンロードしているjsonファイルの各リンクの画像比率を含めるか、FrescoGlideまたはPicassoにはこれを達成するためのいくつかの措置があるのでしょうか?

答えて

1

あなたが画像をダウンロードする前に、実際の画像寸法にプレースホルダのサイズを変更したい場合は、何らかの方法でサーバーからこの情報を取得する必要があります。既に提案したように、リクエストに画像のサイズ/アスペクト比を含めることができます。次に、その情報を使用してビューの先頭のサイズを適切に調整します。ので、あなたが言及したこの恐ろしい視覚効果の

、フレスコはwrap_contentをサポートしていませんが、それはあなたがあなたのサーバーのデータを使用して設定することができますDraweeViewのためのアスペクト比を設定することをサポートします。

http://frescolib.org/docs/wrap-content.html

+0

いやが、すでにとにかく)長い時間前に答えてくれてありがとうと、その情報を見つけ参照してください。 – AskQuestion

-1

は下に述べたように滑空要求にResourceTranscoderを使用してみてください:

Glide 
    .with(this) 
    .load(imageUrl) 
    .asBitmap() 
    .transcode(new BitmapSizeTranscoder(), Size.class) 
    .into(new SimpleTarget<Size>() { 
     @Override public void onResourceReady(Size size, GlideAnimation glideAnimation) { 
      Log.w("SIZE", String.format(Locale.ENGLISH, "%dx%d", size.width, size.height)); 
     } 
    }); 

class Size { 
    int width; 
    int height; 
} 

class BitmapSizeTranscoder implements ResourceTranscoder<Bitmap, Size> { 
    @Override public Resource<Size> transcode(Resource<Bitmap> toTranscode) { 
     Bitmap bitmap = toTranscode.get(); 
     Size size = new Size(); 
     size.width = bitmap.getWidth(); 
     size.height = bitmap.getHeight(); 
     return new SimpleResource<>(size); 
    } 
    @Override public String getId() { 
     return getClass().getName(); 
    } 
} 
関連する問題