Wreszcie rozwiązałem to, dokonując transformacji Picassa, oto fragment:
Transformation transformation = new Transformation() {
@Override
public Bitmap transform(Bitmap source) {
int targetWidth = holder.message_picture.getWidth();
double aspectRatio = (double) source.getHeight() / (double) source.getWidth();
int targetHeight = (int) (targetWidth * aspectRatio);
Bitmap result = Bitmap.createScaledBitmap(source, targetWidth, targetHeight, false);
if (result != source) {
source.recycle();
}
return result;
}
@Override
public String key() {
return "transformation" + " desiredWidth";
}
};
mMessage_pic_url = message_pic_url;
Picasso.with(this.context)
.load(message_pic_url)
.error(android.R.drawable.stat_notify_error)
.transform(transformation)
.into(holder.message_picture, new Callback() {
@Override
public void onSuccess() {
holder.progressBar_picture.setVisibility(View.GONE);
}
@Override
public void onError() {
Log.e(LOGTAG, "error");
holder.progressBar_picture.setVisibility(View.GONE);
}
});
Ta linia służy do dostosowania żądanej szerokości:
int targetWidth = holder.message_picture.getWidth();
Dodatkowo to wycięte zawiera wywołanie zwrotne do wczytywania ukrywania i błędów do rysowania wbudowanego Picassa.
Jeśli potrzebujesz więcej informacji do debugowania dowolnego błędu, MUSISZ zaimplementować niestandardowy odbiornik (konstruktor Picassa), ponieważ onError
Callback
informacja ma wartość „null”. Wiesz tylko, że wystąpił błąd dotyczący zachowania interfejsu użytkownika.
Mam nadzieję, że pomoże to komuś zaoszczędzić wiele godzin.
java.lang.IllegalArgumentException: At least one dimension has to be positive number.
błąd przy rotacji, to jest we fragmencie jakieś pomysły jak to się może stać?