画布内的可点击图像

时间:2010-10-13 09:39:52

标签: android android-sdk-2.1

我在android中创建了一个画布,里面有多个位图图像。我不想让这些图像点击。

到目前为止,我已经尝试过以下事情。

我尝试在图像视图中添加位图,因为imageview有一个setOnClickListner 但我认为ImageView无法添加到Canvas中,所以我放弃了这个想法。因为即使Bitmap本身也没有点击事件。

2 个答案:

答案 0 :(得分:1)

如果您想使用Canvas,请记住它是一种低级绘图机制。

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

  • 抓住任何传入的TouchEvent的坐标。
  • 如果TouchEvent是“触摸”(手指按下)或“触摸”(手指松开),根据您的选择,请将其视为点击。
  • 将点击事件坐标与每个附加图像的边界框进行比较,以查找触摸的图像。如果重叠,请考虑z-index。
  • 触发onClickListener。

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

其他解决方案:

使用Layout(可能是RelativeLayout),在其中将ImageViews添加为子项。

答案 1 :(得分:-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,它将执行您希望它执行的任何操作。