2016-05-01 11 views
1

APIから画像の高さと幅を取得しています。私はPicassoを使ってURLから画像を読み込んでいます。私の問い合わせは、Picassoによる実際の画像読み込みの前に、その高さと幅に応じて画像を描画する方法をAPIのレスポンスとして取得することです。 resize()メソッドで画像の高さと幅をPicassoに設定しました。URLから読み込む前に画像の高さと幅を描画する

しかし、画像が正常にダウンロードされるとPicassoは画像を直接読み込みます。ここで問題は、プリロード状態で画像の高さと幅を描画したいということです。

/* 
* set image view's height and width from API 
*/ 
int imageViewHeight = getHeight(); 
int imageViewWidth = getWidth(); 

// picasso to laod an image from url 
Picasso.with(view.getContext()) 
        .load(url).placeholder(getGradientDrawable()) 
        .resize(imageViewWidth, imageViewHeight) 
        .centerInside() 
        .into(imageView); 

// gradient for placeholder 
static GradientDrawable getGradientDrawable() { 
     GradientDrawable gradientDrawable = new GradientDrawable(); 
     gradientDrawable.setShape(GradientDrawable.RECTANGLE); 
     gradientDrawable.setColor(Color.GRAY); 

     return gradientDrawable; 
    } 

助けてください。

+0

コードを表示します。 – Keshav

+0

がコードを追加しました。私はあなたが望むものを追加します。 –

+0

私はそれが混乱していると感じているので、centerInside()を削除してみてください。 – Keshav

答えて

0

私は私はあなたが正しい理解のかはわからないが、ピカソは、バックグラウンドダウンロードをしながら、あなたのイメージのためのプレースホルダをしたい場合、あなたは以下のようにplaceholder()機能を使用することができます。

Picasso.with(context).load(url).placeholder(drawable).into(imageview); 

あなたが作成することができますdrawableご希望の幅と高さを持つかresource ID

+0

私はプレースホルダも使用しました。しかし成功なし。 Facebookは実際のビューが読み込まれる前に、それぞれのビューを高さと幅ごとに描画します。どうすればそれを達成できますか? –

+0

@MohanishNerurkar with facebook、画像をレンダリングする必要がある(プロフィール写真のような)画像はあらかじめ定義されたサイズを持っています – Pooya

+0

あなたに完全に同意します。私はAPIから画像のサイズを取得していて、resize()関数でPicassoの画像を使用しています。 –

0

これを使用するには、URLをロードするためにピカソのライブラリを呼び出す前に、画像の大きさにImageViewの最大と最小高さと幅を設定し、私のためにそれを行う助けました。これは、これを見ている他の誰かを助けるかもしれません。

imageView.setMinimumWidth(Integer.parseInt(this.reply_list_full.get(position).getImage_width())); 
imageView.setMinimumHeight(Integer.parseInt(this.reply_list_full.get(position).getImage_width())); 

imageView.setMaxWidth(Integer.parseInt(this.reply_list_full.get(position).getImage_width())); 
imageView.setMaxHeight(Integer.parseInt(this.reply_list_full.get(position).getImage_width())); 
関連する問題