У меня есть макет, который выглядит примерно так:
<?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
}