Я пытаюсь создать собственную фигуру, чтобы выполнить это:
Но это мой результат:
Я создал собственный вид и закрашиваю прямоугольную границу пустым верхним левым пространством (с треугольной формой).Это пользовательский класс:
class MatchTriangleImageView : ImageView {
private var mCanvas: Canvas? = null
private var paint: Paint? = null
private var path: Path? = null
private var mWidth = 0
private var mHeight = 0
private val mPaintClear = Paint()
@JvmOverloads
constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0)
: super(context, attrs, defStyleAttr)
init {
mCanvas = Canvas()
paint = Paint()
paint?.isAntiAlias = true
paint?.alpha = 0
paint?.strokeJoin = Paint.Join.ROUND
paint?.strokeCap = Paint.Cap.ROUND
paint?.color = Color.TRANSPARENT
paint?.xfermode = PorterDuffXfermode(PorterDuff.Mode.CLEAR)
path = Path()
mPaintClear.color = Color.TRANSPARENT
mPaintClear.style = Paint.Style.FILL
}
override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {
super.onSizeChanged(w, h, oldw, oldh)
mWidth = w
mHeight = h
}
override fun onDraw(canvas: Canvas?) {
super.onDraw(canvas)
canvas?.drawPaint(mPaintClear)
drawable?.let {
val triangleSize = 90f
path?.fillType = Path.FillType.INVERSE_EVEN_ODD
path?.moveTo(triangleSize, 0f)
path?.lineTo(mWidth.toFloat(), 0f)//top right
path?.lineTo(mWidth.toFloat(), mHeight.toFloat())//bottom right
path?.lineTo(0f, mHeight.toFloat())//bottom left
path?.lineTo(0f, triangleSize)//top left
path?.lineTo(triangleSize, 0f)
path?.close()
canvas?.drawPath(path, paint)
}
}
}
А это макет, в который я поместил пользовательский вид:
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:cardElevation="0dp"
app:cardCornerRadius="0dp"
android:background="@color/transparent">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/transparent"
android:clipToPadding="false"
android:clipChildren="false">
<com...MatchTriangleImageView
android:id="@+id/matchCarViewImageWithTriangleIv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:cropToPadding="true"
android:scaleType="centerCrop"/>
Как я могу решить эту проблему?