2010-10-13 131 views
0

我已经创建了一个画布在android和里面,我有多个位图images.not我想让这些图像点击能够。可点击的图像内的画布

我曾尝试下面的事情至今..

我试图在图像视图中添加位图作为ImageView的有setOnClickListner 但我认为ImageView的不能添加到画布,所以我放弃了这个想法。因为即使Bitmap本身也没有点击事件。

回答

1

如果你想使用画布,请记住它是一个低级别的绘图机制。

因此,您需要自己实现点击逻辑。

  • 捕获任何传入TouchEvent的坐标。
  • 如果TouchEvent是“下压”(手指按下)或“上抬”(手指松开),根据您的选择,将其视为点击。
  • 将点击事件坐标与每个附加图像的边界框进行比较,以查找触摸了哪个图像。在重叠的情况下考虑z-索引。
  • 触发一个onClickListener。

您还必须保持所有图像的坐标和相应的onClickListeners在内存中的某处。

其他解决方案:

使用布局,可能是一个RelativeLayout的,在其中添加ImageViews儿童。

+0

哦,这是一个相当繁琐的过程,你有任何替代解决方案吗? – Hunt 2010-10-13 13:10:56

+0

如果我会用你的方法去,那么我将如何得到/计算画布内图像的边界框? – Hunt 2010-10-13 17:22:25

+0

是的,这是一个繁琐的过程。按照这个过程,你从头开始编写自定义视图。 例如,您可以测量每个添加图像的边界框并将其存储在ArrayList中。 还有另一种解决方案,我编辑了答案。 – 2010-10-14 07:39:39

-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,它会做你想做的任何事情。