Я пишу обычную головоломку. Для удобства я создал пользовательский вид: PuzzleView extends ImageView
. Он перегружает onTouchEvent()
, поэтому я могу перенести мой View
пальцем. Ницца.Форма головоломки для пользовательского вида
Однако у меня есть проблема с размещением этих представлений рядом друг с другом, поэтому они вписываются в себя. Пазлы не квадраты, их форма выглядит следующим образом:
И проблема в том, что эти взгляды должны перекрываться немного, чтобы хорошо выглядеть. Но когда квадраты перекрываются, события касания плохо работают в области пересечения. Если я наивно положить, что головоломки как фон PuzzleView
, 4 из них будет выглядеть следующим образом:
Они обладают прозрачностью, так что я мог сжать их, чтобы хорошо выглядеть. Но это не очень хорошая идея из-за сенсорных событий. Если мы коснемся границы, будет затронута головоломка, которая «выше» (в z-index). И, может быть, пользователь хочет подобрать другой, и он не может.
Я немного ознакомился с классом Android Shape
. Было бы здорово, если бы у меня была головоломка Shape
- тогда я смогу использовать ее в качестве фона моего PuzzleView
, и я надеюсь, что MotionEvent
придет только тогда, когда я коснусь формы, а не какой-то прямоугольной области вокруг нее.
Вопрос в том, как получить головоломку Shape
? В идеале я укажу свое изображение, и оно даст мне Shape
, взятый из этого изображения. Если это невозможно (или очень сложно), возможно, мы сможем сделать эту головоломку Shape
с Path
, но как это сделать? Может быть, слишком сложная форма для использования Path
? Может быть, есть более простой способ?
Это прозрачный. Проблема в том, что 'ImageView' - это квадрат. Представьте себе, как вы поместите головоломку в квадрат? Головоломка будет либо обрезана, либо слишком много свободного места на границе. И логика не проблема, я не обнаруживаю столкновения. –
Я бы хотел, чтобы «ImageView» имел форму головоломки. Не квадратный. Затем я могу установить их близко друг к другу, и события касания будут работать отлично. –