У меня есть список фотографий, который я отображаю в ListView с помощью адаптера.
Сейчас я отображаю фото таким образом:
PhotoAdapter.ViewHolder viewHolder;
if (view == null) {
view = inflater.inflate(R.layout.list_view_photo_item, viewGroup, false);
viewHolder = new PhotoAdapter.ViewHolder(view);
view.setTag(viewHolder);
} else {
viewHolder = (PhotoAdapter.ViewHolder) view.getTag();
}
picasso.load(photo.getImageUrl())
.placeholder(R.drawable.bg_small_11)
.into(viewHolder.image);
Это обычное отображение. А у меня стоит задача отобразить фото по указанным координатам (левая верхняя, правая верхняя, левая нижняя и правая нижняя точка). То есть я не хочу отображать всё фото, а только этот кусок фото, который пользователь раньше выбрал как превью, и я хочу отображать именно его. Сервер мне возвращает полностью всё фото + координаты (в PX) этого превью. Кто, что может посоветовать?
Ответ
Метод transform и интерфейс Transformation позволяют изменить изображение как душе угодно:
picasso.load(photo.getImageUrl())
.placeholder(R.drawable.bg_small_11)
.transform(new Transformation {
@Override public Bitmap transform(Bitmap source) {
Bitmap result = Bitmap.createBitmap(source, x, y, width, height);
if (result != source)
source.recycle();
return result;
}
@Override public String key() { return "crop()"; }
})
.into(viewHolder.image);
Комментариев нет:
Отправить комментарий