Android view фон цветной с прозрачным элементом
Мы можем легко сделать фон прозрачным и цветным элементом с такой формой:
- Color bleue: сплошной цвет
- белый/серый квадрат: прозрачный
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<corners
android:radius="20dp"/>
<solid
android:color="#1f93ed" />
</shape>
Но как я могу сделать фон Вида с цветной задней частью и прозрачным элементом, как это:
Как если бы цвет фона был продырявлен формой... Есть идеи?
3 ответа:
Вы можете нарисовать себе цветную область с переопределением onDraw в пользовательском drawable или view.
Например, в этом коде я рисую четыре "угловых контура":
Результат: 4 зеленые формы в каждом углу изображения, которые вместе рисуют закругленный прямоугольник действительно прозрачный@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); drawCorner(cornerSizeInPixel, canvas, Color.GREEN)); } private void drawCorner(int size, Canvas canvas, int color) { Paint paint = new Paint(); paint.setAntiAlias(true); paint.setColor(color); paint.setStyle(Style.FILL); // top left Path p = new Path(); p.moveTo(0, 0); p.lineTo(size, 0); p.arcTo(new RectF(0, 0, size, size), 180, 90, true); p.lineTo(0, 0); canvas.drawPath(p, paint); // bottom left int h = canvas.getHeight(); p = new Path(); p.moveTo(0, h); p.lineTo(size, h); p.arcTo(new RectF(0, h - size, size, h), 90, 90, true); p.lineTo(0, h); canvas.drawPath(p, paint); // top right int w = canvas.getWidth(); p = new Path(); p.moveTo(w, 0); p.lineTo(w - size, 0); p.arcTo(new RectF(w - size, 0, w, size), 270, 90, true); p.lineTo(w, 0); canvas.drawPath(p, paint); // bottom right p = new Path(); p.moveTo(w, h); p.lineTo(w - size, h); p.arcTo(new RectF(w - size, h - size, w, h), 0, 90, true); p.lineTo(w, h); canvas.drawPath(p, paint); }