2010-10-13 2 views
0

Я создал холст в андроиде и внутри, у меня есть несколько растровых изображений. Не хочу, чтобы эти образы были доступны.clickable image inside canvas

Я попытался следующие вещи до сих пор ..

Я пытался добавить растровое изображение с точки зрения изображения, как ImageView имеет setOnClickListner , но я думаю, что ImageView не может быть добавлен в Canvas, поэтому я бросил эту идею. потому что даже сам Bitmap не имеет событий щелчка.

ответ

1

Если вы хотите использовать Canvas, имейте в виду, что это механизм рисования с низким уровнем.

Поэтому вам необходимо реализовать логику щелчка самостоятельно.

  • Поймать координаты любого входящего TouchEvent.
  • Если TouchEvent - это «прикосновение» (нажатие пальца) или «касание вверх» (отпечаток пальца), в зависимости от вашего выбора, считайте, что это щелчок.
  • Сравните координаты событий щелчка с рамкой для каждого прикрепленного изображения, чтобы найти, какое изображение было затронуто. Учитывайте z-индекс в случае перекрытия.
  • Trigger on onClickListener.

Вы также должны хранить координаты всех изображений и соответствующих onClickListeners где-то в памяти.

Другое решение:

Использование макета, возможно, RelativeLayout, в котором вы добавляете ImageViews как дети.

+0

Охо, это довольно громоздкий процесс, у вас есть альтернативное решение? – Hunt

+0

Если я пойду с вашим подходом, то как мне получить/вычислить ограничительную рамку изображения внутри холста? – Hunt

+0

Да, это громоздкий процесс. Следуя этой процедуре, вы кодируете пользовательский вид с нуля. Это зависит от вас, чтобы измерить ограничительную рамку каждого добавленного изображения и сохранить ее в ArrayList, например. Есть еще одно решение, я отредактировал ответ. –

-1

Я считаю, что вы просите что-то вроде этого:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/background" 
    android:orientation="vertical" > 

    <ImageView 
     android:id="@+id/clickable_image" 
     android:src="@drawable/ic_image" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:clickable="true" 
     /> 
</LinearLayout> 

Теперь у вас есть свой фон «установить весь вид как обои» свои слова, а затем у вас есть изображение, которое кликабельны. В вашем коде вы реализуете onClickListener и присоединяете его к своему ImageView, и он будет делать все, что вы хотите.