Я знаю, что есть много ссылок, которые можно сделать, чтобы сделать ImageView
Round Corner. Но я использую Picasso
Библиотека для загрузки изображений .. Я обращаюсь к link, чтобы получить результат. Но проблема в том, что я использую его в ListView
и для LIstView's
первый элемент ImageView
его работа прекрасна, но для оставшегося преобразования не работает.Сделать ImageView с круглым углом Использование picasso
ответ
Я использую это преобразование: https://gist.github.com/julianshen/5829333
Picasso.with(activity).load(url).transform(new CircleTransform()).into(imageView);
Superb !!! Большое спасибо ... Я просто заменю 'canvas.drawCircle (r, r, r, paint);' с 'canvas.drawRoundRect (новый RectF (0, 0, source.getWidth(), source.getHeight()), r, r, paint); 'to round round rect – Akshay
Вы забыли сказать, что r нужно изменить, чтобы это работало, иначе это сделает круг из RoundRect, потому что радиус слишком велик. – stevyhacker
И оба забыли сказать, что вам нужно изменить r для 0 и size.getHeight(), чтобы он работал (в моем случае). Это окончательный код: 'canvas.drawRoundRect (новый RectF (0, 0, source.getWidth(), source.getHeight()), 0, source.getHeight(), paint);' –
Вы можете использовать RoundedCornersTransformation класс picasso-transformations библиотеки.
Пример:
final int radius = 5;
final int margin = 5;
final Transformation transformation = new RoundedCornersTransformation(radius, margin);
Picasso.with(activity).load(url).transform(transformation).into(imageView);
, если мы установим 'android: scaleType = "centerCrop" 'в' ImageView', а изображение масштабируется, чтобы заполнить представление, тогда ваш метод не будет иметь никакого эффекта, потому что закругленные углы не видны – Choletski
@ Choltski также использует CropTransformation (int width, int height) перед RoundedCornersTransformation – NickUnuchek
@ Choltski, возможно, 'centerCrop()' может помочь: 'Picasso.with (getContext()). load (uri) .centerCrop(). resize (ширина, высота) .transform (transform) .into (imageView) ; '. – CoolMind
Вы можете использовать этот класс, чтобы сделать скругленные углы прямоугольника вид изображения с Пикассо, использовать его как этот
Picasso.with(activity).load(url).transform(new RoundedCornersTransform(this)).into(imageView);
Вот класс RoundedCornersTransform.
package com.demo.picasso;
import android.graphics.Bitmap;
import android.graphics.BitmapShader;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.RectF;
import com.squareup.picasso.Transformation;
public class RoundedCornersTransform implements Transformation {
@Override
public Bitmap transform(Bitmap source) {
int size = Math.min(source.getWidth(), source.getHeight());
int x = (source.getWidth() - size)/2;
int y = (source.getHeight() - size)/2;
Bitmap squaredBitmap = Bitmap.createBitmap(source, x, y, size, size);
if (squaredBitmap != source) {
source.recycle();
}
Bitmap bitmap = Bitmap.createBitmap(size, size, source.getConfig());
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
BitmapShader shader = new BitmapShader(squaredBitmap, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP);
paint.setShader(shader);
paint.setAntiAlias(true);
float r = size/8f;
canvas.drawRoundRect(new RectF(0, 0, source.getWidth(), source.getHeight()), r, r, paint);
squaredBitmap.recycle();
return bitmap;
}
@Override
public String key() {
return "rounded_corners";
}
}
Это короткое n идеальное решение во всех сообщениях о закругленном угловом преобразовании на SO. Большое спасибо :) – Atul
Как использовать этот @stevyhacker, чтобы сделать только два верхних угла округлены ... Я не могу понять, какую часть я могу изменить? – Lion789
@ Lion789: В библиотеке [picasso-transformations] (https://github.com/wasabeef/picasso-transformations/blob/master/transformations/src/main/java/jp/wasabeef/picasso/transformations/RoundedCornersTransformation. Java) mentionded ниже, можно точно установить углы, которые вы хотите округлый, например: Пикассо .с (mContext) .load (mUrl) .resize (200, 200) .centerCrop() . transform (новый RoundedCornersTransformation (2, 0, RoundedCornersTransformation.CornerType.LEFT)) .into (mImageView); –
я использовал RoundedCornersTransformation
класс picasso-transformations
библиотеки. У меня был пользовательский адаптер с шаблоном держателя вида в моем списке. Я добавил ниже зависимость в моем build.gradle
:
dependencies {
compile 'jp.wasabeef:picasso-transformations:2.1.0'
}
И в моем customArrayAdapter.java
, я добавил:
Picasso.with(getContext()).load(path).transform(new RoundedCornersTransformation(10,10)).resize(175,300).into(viewHolder.ivImage);
Это как изменение размера и дать закругленные углы для вас изображений.
После @stevyhacker's answer и this related one, я пришел с этим:
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF;
import com.squareup.picasso.Transformation;
public class RoundedCornersTransform implements Transformation {
private static Bitmap createRoundedRectBitmap(Bitmap bitmap,
float topLeftCorner, float topRightCorner,
float bottomRightCorner, float bottomLeftCorner) {
Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(),
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(output);
final int color = Color.WHITE;
final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
final RectF rectF = new RectF(rect);
Path path = new Path();
float[] radii = new float[]{
topLeftCorner, bottomLeftCorner,
topRightCorner, topRightCorner,
bottomRightCorner, bottomRightCorner,
bottomLeftCorner, bottomLeftCorner
};
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
path.addRoundRect(rectF, radii, Path.Direction.CW);
canvas.drawPath(path, paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);
return output;
}
@Override
public Bitmap transform(Bitmap source) {
int size = Math.min(source.getWidth(), source.getHeight());
int x = (source.getWidth() - size)/2;
int y = (source.getHeight() - size)/2;
Bitmap squaredBitmap = Bitmap.createBitmap(source, x, y, size, size);
if (squaredBitmap != source) {
source.recycle();
}
float r = size/4f;
Bitmap roundedBitmap = createRoundedRectBitmap(squaredBitmap, r, r, r, r);
squaredBitmap.recycle();
return roundedBitmap;
}
@Override
public String key() {
return "rounded_corners";
}
}
Используйте это так:
Picasso.with(context).load(url).transform(new RoundedCornersTransform()).into(imageView);
Вероятно нуждается некоторые улучшения, хотя, так что следите!
Как указано here. Вы можете использовать MaskTransformation
класс библиотеки picasso-transformations.
Пример:
final Transformation transformation = new MaskTransformation(getContext(), R.drawable.rounded_convers_transformation);
Picasso.with(activity).load(url).transform(transformation).into(imageView);
Рез/рисуем/rounded_convers_transformation.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="5dp"/>
<solid android:color="@color/black"/>
</shape>
UPDATE: Но обратите внимание, что вы должны также .resize(w,h)
изображение, потому что, если изображение будет большой круглый будет не могут быть определены
Хорошее решение. Также обратите внимание, что перед тем, как применить это преобразование, «ImageView» должен быть видимым (в другом случае преобразование не будет применено). И да, вы можете написать 'Picasso.with (getContext()). Load (uri) .centerCrop(). Resize (ширина, высота) .transform (transform) .into (imageView);' для обрезанных изображений. – CoolMind
- 1. Использование Picasso с ImageView
- 2. Линия Spritekit с круглым углом
- 3. UIView с круглым углом и белой рамкой
- 4. Android: рисую с идеальным круглым углом
- 5. Как сделать угол изображения внутри ImageView круглым?
- 6. Как нарисовать прямоугольник с 1 круглым углом?
- 7. Raphael-JS: Rect с одним круглым углом
- 8. Как сделать форму с круглым закругленным углом слева и левым нижним закругленным углом?
- 9. Код Android, чтобы сделать изображениеView круглым не работает
- 10. Programmatic imageview и picasso
- 11. MapView с круглым угловым левым верхним и RightTop углом наклонного
- 12. Использование Picasso с RoundedBitmapDrawable
- 13. IndoorAtlas SDK 2.0: Использование Picasso с пользовательским ImageView
- 14. iOS Сделайте ImageView совпадающим с верхним углом
- 15. Scolling ImageView с сервера с помощью Picasso
- 16. Использование Picasso с растровыми изображениями
- 17. Загрузить растровое изображение с picasso в ImageView
- 18. Android - загрузить Byte [] в imageview с picasso
- 19. Android: как выбрать эффект «selectableItemBackground» на ImageView с круглым пиктограммой?
- 20. Использование Picasso в GridView: ImageView есть, но без изображения
- 21. Нарисуйте линию на ImageView, установленную Picasso
- 22. Использование библиотеки picasso с изображением окружности
- 23. Java OutOfMemoryError Использование Picasso Image
- 24. Пейзаж Ориентация: Change imageview src (используя Picasso)
- 25. GridView, Picasso Не загружается в ImageView
- 26. Использование Picasso в listview
- 27. Android Picasso ImageView - Из памяти Исключение MemoryLeak
- 28. Использование Picasso для решения OutOfMemoryError
- 29. Как сделать содержимое круглой границы также круглым?
- 30. Как сделать калькулятор круглым до ближайшего десятого
Вы пробовали это преобразование? https: //gist.github.com/aprock/6213395 Использование: Picasso.with (context) .load (url) .transform (new RoundedTransformation()). в (imageView) –
@RoiDivon Я только что использовал ссылку, которую вы предоставили, но она также давала то же самое эффект .. – Akshay