画布内可点击的图像

发布于 2024-09-27 05:55:30 字数 195 浏览 1 评论 0原文

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

到目前为止我已经尝试过以下操作..

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

I have create a canvas in android and inside that i have multiple bitmap images.not i want to make these images click able.

I have tried following things so far..

I tried to add bitmap in image view as imageview has a setOnClickListner
but i think ImageView can't be added into Canvas , so i dropped this idea. because even Bitmap itself has no click events.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

迷乱花海 2024-10-04 05:55:30

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

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

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

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

其他解决方案:

使用布局(可能是相对布局),在其中添加 ImageView 作为子项。

If you want to use Canvas, keep in mind that it is a low level drawing mechanism.

Therefore, you need to implement the click logic yourself.

  • Catch the coordinates of any incoming TouchEvent.
  • If the TouchEvent is a "touch down" (finger pressed) or "touch up" (finger released), depending on your choice, consider it to be a click.
  • Compare the click event coordinates to every attached image's bounding box to find which image was touched. Take the z-index into account in case of overlap.
  • Trigger an onClickListener.

You also have to keep the coordinates of all images and the corresponding onClickListeners somewhere in memory.

Other solution:

Use a Layout, possibly a RelativeLayout, in which you add the ImageViews as children.

宣告ˉ结束 2024-10-04 05:55:30

我相信您正在要求类似的东西:

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

I believe you're asking for something like that:

<?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>

Now you have your background "setting the whole view as a wallpaper" in your own words, and then you have your image, which is clickable. In your code you implement onClickListener and attach it to your ImageView and it will do whatever you want it to do.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文