#android #picasso #android_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) этого превью. Кто, что может посоветовать?
Ответы
Ответ 1
Метод 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);Ответ 2
Вам нужно получить Bitmap и создать его обрезанную версию. У вручную установить в ImageView. С Picasso это можно сделать примерно так: Picasso.with(context) .load(photo.getImageUrl()) .placeholder(R.drawable.bg_small_11) .into(new Target() { @Override public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { Bitmap croppedBitmap = Bitmap.createBitmap( bitmap, xCoord, yCoord, width, height); // Координаты, полученные с сервера viewHolder.image.setImageBitmap(croppedBitmap); } @Override public void onBitmapFailed(Drawable errorDrawable) { } @Override public void onPrepareLoad(Drawable placeHolderDrawable) { } }); }
Комментариев нет:
Отправить комментарий