2017-06-30 6 views
0

私の要件は、Retrofitを使用してURLからビットマップをダウンロードする必要があり、通知アイコンに設定する必要があります。私はどんなファイルやフォルダにもダウンロードしたくない。私は直接通知アイコンに戻りビットマップを使用したいと思います。私が間違っていたところPLSの助けRetrofitを使用して通知アイコンに設定してURLから画像をダウンロードする方法

マイコード:

if (photourl != null) { 
if ((photourl.endsWith(".jpg") || photourl.endsWith(".png") || photourl.endsWith(".jpeg"))) { 
    if(messageType!=6 && messageType!=7){ 
     RoundCornerImg RCIMG = new RoundCornerImg(); 
     bm = RCIMG.getRoundedRectBitmap(getImageBitmap(photourl), 10); 

    }else{ 
     bm = getImageBitmap(photourl); 
     } 
     photo_flag = true; 
     } 
    } 

取得イメージビットマップ方式:

private Bitmap getImageBitmap(String url) { 

     Call<ResponseBody> call=RetroApiCall.getNotificationImage(url); 

     call.enqueue(new Callback<ResponseBody>() { 
      @Override 
      public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) { 
       if (response.isSuccessful()) { 
        bitmap =BitmapFactory.decodeStream(response.body().byteStream()); 
       }else{ 
        bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); 
        if (Build.VERSION.SDK_INT >= 20) { 
         bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.notification); 
        } 
       } 
      } 

      @Override 
      public void onFailure(Call<ResponseBody> call, Throwable t) { 

      } 
     }); 


    return bitmap; 
} 

ありがとう!ここで誤って変換方法getImageBitmapビットマップで

+0

yはピカソを使用していませんか? – Ak9637

+0

ピカソとグライドの場合、目標の画像ビューをスパイシーにする必要があります。そうでない場合は、画像の幅と高さを指定する必要があります。複数のデバイスの幅を指定すると問題が発生する可能性があります – sree

+0

ターゲットインターフェイスを使用してビットマップを取得し、そのビットマップを使用することができます – Ak9637

答えて

0

。私は次のコードでそれを解決しました

private void getImageBitmap(String url) { 


    Call<ResponseBody> request = RetroApiCall.getNotificationImage(url); 

    try { 
     downloadFile(request.execute().body()); 

    } catch (IOException e) { 

     e.printStackTrace(); 
     Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show(); 
    } 
} 

private void downloadFile(ResponseBody body) throws IOException { 

    InputStream bis = new BufferedInputStream(body.byteStream(), 1024 * 8); 
    Bitmap bitmap = BitmapFactory.decodeStream(bis); 
    setBitmap(bitmap); 

} 

私は最終的に答えを得ました!

-1
private Target target = new Target() { 
     @Override 
     public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { 
     } 

     @Override 
     public void onBitmapFailed(Drawable errorDrawable) { 
     } 

     @Override 
     public void onPrepareLoad(Drawable placeHolderDrawable) { 
     } 
} 

private void someMethod() { 
    Picasso.with(this).load("url").into(target); 
} 

@Override 
public void onDestroy() { // could be in onPause or onStop 
    Picasso.with(this).cancelRequest(target); 
    super.onDestroy(); 
} 
関連する問題