Маска изображения в макете в Android - PullRequest
2 голосов
/ 15 февраля 2011

Мне нужно иметь возможность маскировать изображение в макете, чтобы иметь закругленные углы.Есть ли простой способ указать альфа-маску в макете?Я хотел бы избежать необходимости вручную маскировать каждое растровое изображение, которое я использую.


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

Вот мой код, как указано в другом ответе:

HttpURLConnection connection = (HttpURLConnection) this.items.get(position).getIcon().toURL().openConnection();
connection.setDoInput(true);
connection.connect();

Bitmap bitmap = BitmapFactory.decodeStream(connection.getInputStream());

Integer dimension = bitmap.getWidth() > bitmap.getHeight() ? bitmap.getWidth() :
        bitmap.getHeight();

Bitmap rounder = Bitmap.createBitmap(dimension, dimension, Bitmap.Config.ARGB_8888);

Canvas canvas = new Canvas(rounder);

Paint painter = new Paint(Paint.ANTI_ALIAS_FLAG);
painter.setColor(Color.RED);

canvas.drawRoundRect(new RectF(0, 0, dimension, dimension), 
        20.0F, 20.0F, painter);

painter.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));

canvas.drawBitmap(bitmap, 0, 0, null);
canvas.drawBitmap(rounder, 0, 0, painter);

holder.image.setImageBitmap(bitmap);

Однако это не работает.Я не вижу округленных углов, я вижу обычное изображение как есть.Есть ли в конце пропущенный мной шаг, связанный с холстом?

Ответы [ 2 ]

2 голосов
/ 15 февраля 2011

Похоже, что на ваш вопрос уже был дан ответ, возможно, это может помочь?

1 голос
/ 15 февраля 2011

Есть несколько способов сделать это.Я бы сделал прозрачный патч из девяти, за исключением углов, и нарисовал его поверх изображений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...