Есть макет, содержащий два представления. Первое представление, какой тип не имеет значения, и другое настраиваемое представление, частично покрывающее первое. Я пытаюсь захватить часть пространства, покрытого вторым видом (как растровое изображение?), И нарисовать его в другой части второго вида. Пока не повезло.
Пример действия xml:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ImageView
android:id="@+id/covered_view"
android:layout_width="200dp"
android:layout_height="match_parent"
android:src="@drawable/testimg"
android:scaleType="centerCrop" />
<com.example.coveringview.CloningView
android:id="@+id/covering_view"
android:layout_width="200dp"
android:layout_height="match_parent"
android:layout_marginStart="100dp"
android:layout_marginBottom="100dp"
android:background="@color/colorPrimary"
/>
</FrameLayout>
И код CloningView.kt с методом onDraw, выполняющим работу:
import android.content.Context
import android.graphics.Canvas
import android.graphics.RectF
import android.graphics.drawable.Drawable
import android.util.AttributeSet
import android.view.View
class CloningView : View {
override fun onDraw(canvas: Canvas) {
super.onDraw(canvas)
// Grab the rectangular segment which has been hidden below the instance of CloningView
val srcRect: RectF = RectF(0.0f, 0.0f, 50.0f, 50.0f)
val drawable: Drawable = ???
// Draw the taken segment at another coordinates
canvas.translate(50.0f, 200.0f)
drawable.draw(canvas)
}
}
I надеюсь, что комментарии в onDraw вполне объяснимы.
Ожидаемый результат
Возможно ли вообще этого достичь? Я ничего не мог найти об этом.