Определить вид, которого касаются - PullRequest
0 голосов
/ 05 июня 2018

У меня есть макет, который выглядит примерно так:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    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:id="@+id/main_read_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.project.books.flipview.FlipView
        android:id="@+id/flip_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/color_black"
        app:orientation="horizontal"
        tools:context=".ReadActivity" >
    </com.project.books.flipview.FlipView>

    <include
        android:id="@+id/readingtoolbar"
        android:visibility="invisible"
        app:layout_constraintBottom_toBottomOf="parent"
        layout="@layout/readingbar_layout" />

</android.support.constraint.ConstraintLayout>

FlipView - это пользовательский Framelayout, который имеет анимацию поворота страницы, как книгу.Пользователь также может увеличивать масштаб каждого разворота страницы.

Панель инструментов ниже содержит набор мелков.Как только пользователь нажимает на цвет, запускается невидимый фрагмент, и пользователь может рисовать поверх разворота страницы.

Это макет панели инструментов

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/readbar"
    android:layout_width="match_parent"
    android:layout_height="?android:attr/actionBarSize"
    android:background="@color/defaultdark_color"
    app:layout_constraintBottom_toBottomOf="parent"
    android:elevation="4dp">

    <android.support.constraint.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">


        <ImageView
            android:id="@+id/tabtools"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="16dp"
            android:src="@drawable/icontools"
            android:scaleType="fitXY"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <ImageView
            android:id="@+id/tabdictionary"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:scaleType="fitXY"
            android:layout_marginStart="16dp"
            android:src="@drawable/icondictionary"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toEndOf="@id/tabtools"
            app:layout_constraintTop_toTopOf="parent" />

        <ImageView
            android:id="@+id/tabassessment"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="16dp"
            android:alpha="0.3"
            android:scaleType="fitXY"
            android:src="@drawable/iconassesment"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toEndOf="@id/tabdictionary"
            app:layout_constraintTop_toTopOf="parent" />

        <ImageView
            android:id="@+id/tabexit"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="8dp"
            android:scaleType="fitXY"
            android:src="@drawable/iconclose"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent" />


        <ImageView
            android:id="@+id/eraser"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_marginTop="4dp"
            android:src="@drawable/drawingeraser"
            android:scaleType="fitXY"
            android:visibility="gone"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toStartOf="@id/guide_eraser"
            app:layout_constraintBottom_toBottomOf="parent" />

        <ImageView
            android:id="@+id/crayon_black"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_marginStart="8dp"
            android:onClick="buttonClicked"
            android:src="@drawable/drawingblack"
            android:scaleType="fitXY"
            android:visibility="gone"
            android:layout_marginTop="4dp"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toStartOf="@id/crayon_blue"
            app:layout_constraintStart_toEndOf="@+id/guide_eraser" />

        <ImageView
            android:id="@+id/crayon_blue"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_marginStart="8dp"
            android:onClick="buttonClicked"
            android:src="@drawable/drawingblue"
            android:scaleType="fitXY"
            android:visibility="gone"
            android:layout_marginTop="4dp"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toStartOf="@id/crayon_green"
            app:layout_constraintStart_toEndOf="@+id/crayon_black" />

        <ImageView
            android:id="@+id/crayon_green"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_marginStart="8dp"
            android:onClick="buttonClicked"
            android:src="@drawable/drawinggreen"
            android:scaleType="fitXY"
            android:visibility="gone"
            android:layout_marginTop="4dp"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toStartOf="@id/crayon_orange"
            app:layout_constraintStart_toEndOf="@+id/crayon_blue" />

        <ImageView
            android:id="@+id/crayon_orange"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_marginStart="8dp"
            android:onClick="buttonClicked"
            android:src="@drawable/drawingorange"
            android:scaleType="fitXY"
            android:visibility="gone"
            android:layout_marginTop="4dp"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toStartOf="@id/crayon_pink"
            app:layout_constraintStart_toEndOf="@+id/crayon_green" />

        <ImageView
            android:id="@+id/crayon_pink"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_marginStart="8dp"
            android:onClick="buttonClicked"
            android:src="@drawable/drawingpink"
            android:scaleType="fitXY"
            android:visibility="gone"
            android:layout_marginTop="4dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintEnd_toStartOf="@id/crayon_red"
            app:layout_constraintStart_toEndOf="@+id/crayon_orange" />

        <ImageView
            android:id="@+id/crayon_red"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_marginStart="8dp"
            android:onClick="buttonClicked"
            android:src="@drawable/drawingred"
            android:scaleType="fitXY"
            android:visibility="gone"
            android:layout_marginTop="4dp"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toStartOf="@id/crayon_violet"
            app:layout_constraintStart_toEndOf="@+id/crayon_pink" />

        <ImageView
            android:id="@+id/crayon_violet"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_marginStart="8dp"
            android:onClick="buttonClicked"
            android:src="@drawable/drawingviolet"
            android:scaleType="fitXY"
            android:visibility="gone"
            android:layout_marginTop="4dp"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toStartOf="@id/crayon_white"
            app:layout_constraintStart_toEndOf="@+id/crayon_red" />

        <ImageView
            android:id="@+id/crayon_white"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_marginStart="8dp"
            android:onClick="buttonClicked"
            android:src="@drawable/drawingwhite"
            android:scaleType="fitXY"
            android:visibility="gone"
            android:layout_marginTop="4dp"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toStartOf="@id/crayon_yellow"
            app:layout_constraintStart_toEndOf="@+id/crayon_violet" />

        <ImageView
            android:id="@+id/crayon_yellow"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_marginStart="8dp"
            android:onClick="buttonClicked"
            android:scaleType="fitXY"
            android:visibility="gone"
            android:layout_marginTop="4dp"
            android:src="@drawable/drawingyellow"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toEndOf="@id/crayon_white"
            app:layout_constraintEnd_toStartOf="@id/guide_center"/>

        <ImageView
            android:id="@+id/clear"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/iconreset"
            android:visibility="gone"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toEndOf="@+id/guide_center"
            app:layout_constraintTop_toTopOf="parent" />

        <ImageView
            android:id="@+id/share"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="8dp"
            android:visibility="gone"
            android:actionProviderClass="android.widget.ShareActionProvider"
            android:showAsAction="ifRoom"
            android:src="@drawable/iconshare"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toStartOf="@+id/tabexit2"
            app:layout_constraintTop_toTopOf="parent" />

        <ImageView
            android:id="@+id/tabexit2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="8dp"
            android:visibility="gone"
            android:src="@drawable/iconclose"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <android.support.constraint.Guideline
            android:id="@+id/guide_eraser"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            app:layout_constraintGuide_percent="0.1"/>

        <android.support.constraint.Guideline
            android:id="@+id/guide_center"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            app:layout_constraintGuide_percent="0.6"/>


    </android.support.constraint.ConstraintLayout>

</android.support.v7.widget.Toolbar>

Изначально панель инструментовначинается как невидимый.Если вы нажмете где-нибудь на странице, она должна выдвинуться снизу.Я могу зафиксировать событие нажатия, используя dispatchTouchEvent

override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {

if (ev!!.action == MotionEvent.ACTION_DOWN) {
    startX = ev.x
    startY = ev.y
}
if (ev.action == MotionEvent.ACTION_UP){
    val endX = ev.x
    val endY = ev.y
    if (isAClick(startX, endX, startY, endY)) {
        onSlideViewButtonClick(reading_toolbar!!)
        return true
    } else {
        return super.dispatchTouchEvent(ev)
    }
}
return super.dispatchTouchEvent(ev)
}

Таким образом, панель инструментов выдвигается, но если я нажимаю на любой карандаш на панели инструментов, она сдвигается вниз, чего не должно быть.По сути, я хочу, чтобы, если пользователь щелкнул где-либо еще, ИСКЛЮЧИТЬ на самой панели инструментов, он должен скользить вниз.

Я попытался использовать onTouch, чтобы я мог передать представление вместо dispatchTouchEvent, но не могукажется, чтобы захватывать клики даже с той же логикой.Я могу захватить событие перетаскивания, хотя.

class ReadActivity : Activity(), FlipViewAdapter.Callback, FlipView.OnFlipListener, FlipView.OnOverFlipListener, View.OnTouchListener {
...
}

настройка

flip_view.setOnTouchListener(this)

проверка нажатия здесь

override fun onTouch(v: View?, ev: MotionEvent?): Boolean {
    println("clicking")
    // put actual clicking logic
    return true
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...