Intereting Posts
Проблема кодирования строк в Webview Android Multipart HTTP Post не отправляет MIME-тип файла Как узнать, сколько аккумуляторов используется моим Android-устройством на устройствах пользователя? Просмотр анимаций в Android Collapse / Expand Views в LinearLayout Запуск приложения Google Maps с предоставленным местоположением и маркером Настройка размера настраиваемого диалогового окна в android ContentObserver для прослушивания изменений контактов Ошибка Jackson + SugarOrm Fancybox: не может прокручиваться на телефонах Android Как добавить поддержку языка для android Как конвертировать PDF-страницу в изображение на Android? Как разработать приложение для Android с API Google Maps на нескольких компьютерах? Ошибки, генерирующие подписанный apk для выпуска: Proguard config Как плавно продолжать перемещать маркер текущего местоположения в Google Maps v2 android Android – Как выровнять центр изображения относительно текстового поля

Добавление границ для изображения с округленным изображением

Что у меня :: У меня есть Imageview, для которого я делаю изображение в виде круга, используя пикассо Введите описание изображения здесь

Что мне делать : я хочу добавить черную рамку для закругленного изображения с помощью моей текущей реализации, как добиться этого, не используя стороннюю библиотеку

Picasso.with(this) .load("http://i.imgur.com/DvpvklR.png") .transform(new RoundedTransformation(50, 4)) .resize(100, 100) .centerCrop().into(imageView1); 

RoundedTransformation.java

 // enables hardware accelerated rounded corners // original idea here : http://www.curious-creature.org/2012/12/11/android-recipe-1-image-with-rounded-corners/ public class RoundedTransformation implements com.squareup.picasso.Transformation { private final int radius; private final int margin; // dp // radius is corner radii in dp // margin is the board in dp public RoundedTransformation(final int radius, final int margin) { this.radius = radius; this.margin = margin; } @Override public Bitmap transform(final Bitmap source) { final Paint paint = new Paint(); paint.setAntiAlias(true); paint.setShader(new BitmapShader(source, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP)); Bitmap output = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Config.ARGB_8888); Canvas canvas = new Canvas(output); canvas.drawRoundRect(new RectF(margin, margin, source.getWidth() - margin, source.getHeight() - margin), radius, radius, paint); if (source != output) { source.recycle(); } return output; } @Override public String key() { return "rounded"; } } 

РЕДАКТИРОВАТЬ

 public class RoundedTransformation implements com.squareup.picasso.Transformation { private final int radius; private final int margin; // dp // radius is corner radii in dp // margin is the board in dp public RoundedTransformation(final int radius, final int margin) { this.radius = radius; this.margin = margin; } @Override public Bitmap transform(final Bitmap source) { final Paint paint = new Paint(); paint.setAntiAlias(true); paint.setShader(new BitmapShader(source, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP)); Bitmap output = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Config.ARGB_8888); Canvas canvas = new Canvas(output); canvas.drawRoundRect(new RectF(margin, margin, source.getWidth() - margin, source.getHeight() - margin), radius, radius, paint); if (source != output) { source.recycle(); } Paint paint1 = new Paint(); paint1.setColor(Color.RED); paint1.setStyle(Style.STROKE); paint1.setAntiAlias(true); paint1.setStrokeWidth(2); canvas.drawCircle((source.getWidth() - margin)/2, (source.getHeight() - margin)/2, radius-2, paint1); return output; } @Override public String key() { return "rounded"; } } 

Введите описание изображения здесь

Solutions Collecting From Web of "Добавление границ для изображения с округленным изображением"

Вы можете использовать drawCircle с другим object Paint. Например:

 Paint paint = new Paint(); paint.setColor(Color.RED); paint.setStyle(Style.STROKE); paint.setAntiAlias(true); paint.setStrokeWidth(2); canvas.drawCircle((source.getWidth() - margin)/2, (source.getHeight() - margin)/2, radius-2, paint); 

Кроме того, вместо использования drawRoundRect для рисования круга вы можете использовать drawCircle

Конечный класс трансформации, благодаря черной полосе

 public class RoundedTransformation implements com.squareup.picasso.Transformation { private final int radius; private final int margin; // dp // radius is corner radii in dp // margin is the board in dp public RoundedTransformation(final int radius, final int margin) { this.radius = radius; this.margin = margin; } @Override public Bitmap transform(final Bitmap source) { final Paint paint = new Paint(); paint.setAntiAlias(true); paint.setShader(new BitmapShader(source, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP)); Bitmap output = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Config.ARGB_8888); Canvas canvas = new Canvas(output); canvas.drawCircle((source.getWidth() - margin)/2, (source.getHeight() - margin)/2, radius-2, paint); if (source != output) { source.recycle(); } Paint paint1 = new Paint(); paint1.setColor(Color.RED); paint1.setStyle(Style.STROKE); paint1.setAntiAlias(true); paint1.setStrokeWidth(2); canvas.drawCircle((source.getWidth() - margin)/2, (source.getHeight() - margin)/2, radius-2, paint1); return output; } @Override public String key() { return "rounded"; } }