Установить фон с пользовательской формой и изображением PNG - PullRequest
2 голосов
/ 03 января 2012

У меня есть view, для которого я хочу установить drawable изображение, которое очень просто. изображения установлены правильно, но углы квадратные. Если я пытаюсь сделать углы округленными, используя shape attribute в xml drawable, то углы закругляются, но я не могу найти способ установить изображение background, поскольку используется атрибут фона view установить xml drawable для угла.

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

Большое спасибо за вашу помощь.

1 Ответ

1 голос
/ 03 января 2012

Переопределить метод dispatchDraw вашего представления (или onDraw в случае, если это не иерархия представления)

private final Path mClipPath;
.......
mClipPath = new Path();
mClipPath.addRoundRect(new RectF(x,y,z,t),radius,radius,Direction.CW);
........
@Override
protected void dispatchDraw(final Canvas canvas){
    canvas.clipPath(mClipPath); // clip the canvas so that we can draw only in the boundaries specified by mClipPath
    super.dispatchDraw(canvas); //now draw the view on the clipped canvas
    .....  //do other drawing
}
...