2015-10-07 35 views
5

Chcę użyć Picasso, aby ustawić kolor jako obraz zastępczy.Jak mogę użyć koloru jako obrazu zastępczego w Picasso?

Próbowałem to:

int placeHolderColor2 = Color.rgb(20,20,20); 

    Picasso.with(context) 
     .load(item.getImageUrls().get(0)) 
     .placeholder(placeHolderColor2) 
     .error(R.drawable.card_image) 
     .centerCrop() 
     .fit() 
     .into(viewHolder.imageView); 

Ale to prowadzi do następującego błędu:

10-07 05:36:42.965 5827-5827/? E/AndroidRuntime: android.content.res.Resources$NotFoundException: Resource ID #0xff141414 
10-07 05:36:42.965 5827-5827/? E/AndroidRuntime:  at android.content.res.Resources.getValue(Resources.java:1266) 
10-07 05:36:42.965 5827-5827/? E/AndroidRuntime:  at android.content.res.Resources.getDrawable(Resources.java:785) 
10-07 05:36:42.965 5827-5827/? E/AndroidRuntime:  at android.content.res.Resources.getDrawable(Resources.java:752) 
10-07 05:36:42.965 5827-5827/? E/AndroidRuntime:  at com.squareup.picasso.RequestCreator.getPlaceholderDrawable(RequestCreator.java:676) 
10-07 05:36:42.965 5827-5827/? E/AndroidRuntime:  at com.squareup.picasso.RequestCreator.into(RequestCreator.java:637) 
10-07 05:36:42.965 5827-5827/? E/AndroidRuntime:  at com.squareup.picasso.RequestCreator.into(RequestCreator.java:601) 
10-07 05:36:42.965 5827-5827/? E/AndroidRuntime:  at com.lorentzos.swipecards.ServiceCardDtoListAdapter.createViewFromResource(ServiceCardDtoListAdapter.java:116) 
10-07 05:36:42.965 5827-5827/? E/AndroidRuntime:  at com.lorentzos.swipecards.ServiceCardDtoListAdapter.getView(ServiceCardDtoListAdapter.java:66) 
10-07 05:36:42.965 5827-5827/? E/AndroidRuntime:  at com.lorentzos.flingswipe.SwipeFlingAdapterView.layoutChildren(SwipeFlingAdapterView.java:161) 
10-07 05:36:42.965 5827-5827/? E/AndroidRuntime:  at com.lorentzos.flingswipe.SwipeFlingAdapterView.refresh(SwipeFlingAdapterView.java:152) 
10-07 05:36:42.965 5827-5827/? E/AndroidRuntime:  at com.lorentzos.flingswipe.SwipeFlingAdapterView.onLayout(SwipeFlingAdapterView.java:138) 
10-07 05:36:42.965 5827-5827/? E/AndroidRuntime:  at android.view.View.layout(View.java:15671) 
10-07 05:36:42.965 5827-5827/? E/AndroidRuntime:  at android.view.ViewGroup.layout(ViewGroup.java:5038) 
10-07 05:36:42.965 5827-5827/? E/AndroidRuntime:  at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1076) 
10-07 05:36:42.965 5827-5827/? E/AndroidRuntime:  at android.view.View.layout(View.java:15671) 
10-07 05:36:42.965 5827-5827/? E/AndroidRuntime:  at android.view.ViewGroup.layout(ViewGroup.java:5038) 
10-07 05:36:42.965 5827-5827/? E/AndroidRuntime:  at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579) 
10-07 05:36:42.965 5827-5827/? E/AndroidRuntime:  at android.widget.FrameLayout.onLayout(FrameLayout.java:514) 
10-07 05:36:42.965 5827-5827/? E/AndroidRuntime:  at android.view.View.layout(View.java:15671) 
10-07 05:36:42.965 5827-5827/? E/AndroidRuntime:  at android.view.ViewGroup.layout(ViewGroup.java:5038) 
10-07 05:36:42.965 5827-5827/? E/AndroidRuntime:  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703) 
10-07 05:36:42.965 5827-5827/? E/AndroidRuntime:  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557) 
10-07 05:36:42.965 5827-5827/? E/AndroidRuntime:  at android.widget.LinearLayout.onLayout(LinearLayout.java:1466) 
10-07 05:36:42.965 5827-5827/? E/AndroidRuntime:  at android.view.View.layout(View.java:15671) 
10-07 05:36:42.965 5827-5827/? E/AndroidRuntime:  at android.view.ViewGroup.layout(ViewGroup.java:5038) 
10-07 05:36:42.965 5827-5827/? E/AndroidRuntime:  at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579) 
10-07 05:36:42.965 5827-5827/? E/AndroidRuntime:  at android.widget.FrameLayout.onLayout(FrameLayout.java:514) 
10-07 05:36:42.965 5827-5827/? E/AndroidRuntime:  at android.view.View.layout(View.java:15671) 
10-07 05:36:42.965 5827-5827/? E/AndroidRuntime:  at 

Jak mogę używać jako zastępczego Kolor obrazu z Picasso?

Odpowiedz

5

można zrozumieć z błędem logowania sobie android.content.res.Resources$NotFoundException: Resource ID #0xff141414

Użyj najnowszej wersji Picasso

I spróbować tej

Picasso.with(mContext).load("URL").placeholder(R.color.holder_color).error(R.color.error_color).into(viewHolder.imageView); 
5

w moim projekcie użyłem tego rozwiązania dokonać zastępczy kolor

 gradientDrawable = new GradientDrawable(); 
     gradientDrawable.setShape(GradientDrawable.RECTANGLE); 
     gradientDrawable.setColor(color); 

Picasso.with(context) 
    .load(item.getImageUrls().get(0)) 
    .placeholder(gradientDrawable) 
    .error(R.drawable.card_image) 
    .centerCrop() 
    .fit() 
    .into(viewHolder.imageView); 

Takie podejście pomaga, gdy ImageView ustawiony jest na wrap_content, ponieważ proste wypełnienie kolorem sprawi, że twój obraz będzie niewidoczny, dopóki obraz nie zostanie załadowany, ponieważ, jak wiadomo, kolor nie zajmuje żadnej przestrzeni.