代码之家  ›  专栏  ›  技术社区  ›  Hunt

画布内的可点击图像

  •  0
  • Hunt  · 技术社区  · 15 年前

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

    到目前为止,我已经尝试了以下方法。

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

    2 回复  |  直到 14 年前
        1
  •  1
  •   DavGin    15 年前

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

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

    • 捕捉任何传入TouchEvent的坐标。
    • 如果触控事件是“触控”(按手指)或“触控”(释放手指),根据您的选择,将其视为单击。
    • 将单击事件坐标与每个附加图像的边界框进行比较,以找到触摸到的图像。如果出现重叠,请考虑Z索引。
    • 触发一个onclicklistener。

    您还必须将所有图像的坐标和相应的onclickListener保存在内存中的某个地方。

    其他解决方案:

    使用一个布局,可能是相对布局,在其中添加图像视图作为子视图。

        2
  •  -1
  •   Nora Madjarova    14 年前

    我相信你在要求这样的东西:

    <?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,它将执行您希望它执行的任何操作。