Страницы

Поиск по вопросам

четверг, 18 апреля 2019 г.

Как отобразить определенную часть изображения в ImageView?

У меня есть список фотографий, который я отображаю в 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);

Комментариев нет:

Отправить комментарий