Возьмите и нарисуйте сегмент обзора, который перекрывается другим видом. - PullRequest
0 голосов
/ 16 июня 2020

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

Пример действия 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 вполне объяснимы.

Ожидаемый результат

Возможно ли вообще этого достичь? Я ничего не мог найти об этом.

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