如何在我的自定义视图中设置画布中的位图监听器...?

时间:2011-09-28 12:42:57

标签: android android-layout android-widget

我有一个自定义视图,我在其中绘制了许多位图,

现在我想在用户点击它时更改图像位图。

如何做到这一点......?

这是我的自定义视图的onDraw方法。

public void onDraw(Canvas canvas) {

        super.onDraw(canvas);
        Bitmap mBitmap = null;

        int x = row * 20;
        int y = clm * 20;
        System.out.println("the x=" + x + "y=" + y);
        int counter = 0;
        for (int a = 0; a <= x; a += 20)
            for (int b = 0; b <= y; b += 20) {
                mBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.test);
                canvas.drawBitmap(mBitmap, a, b, null);
                counter++;
            }   
    }

2 个答案:

答案 0 :(得分:0)

View.SetOnClickListner() 

适用于任何视图,只需将View替换为您的customView。您可以访问发生单击的视图。然后你可以改变视图的位图。

答案 1 :(得分:0)

要使多个位图可单击,您将需要使用ViewGroup类,因为OnClickListener已实现到视图中。

更新

你确实认识到布局内部的观点。当您在屏幕上看到5个按钮时,它们是布局(ViewGroup)内的5个视图。您添加的侦听器位于视图上。如果您想要单击多个位图,则需要将其作为图像视图并将其添加到布局中。如果要按特定顺序排列它们,则需要创建自定义视图组。使用自定义视图,您只能将单击设置为整个视图而不是视图的一部分。也许你可以覆盖onTouch事件的视图并捕获触摸的x,y坐标并找到通过大量计算点击的部分。但这就是一个大型的黑客和观点小组是自然的做事方式。