Android onDraw方法没有把我投入的所有东西都画出来

Android onDraw方法没有把我投入的所有东西都画出来,android,android-canvas,ondraw,Android,Android Canvas,Ondraw,我已经创建了一个自定义视图类,用于我正在处理的项目中。简单地说,我正在显示一个图像,然后在原始图像的顶部添加图像(当前通过单击图像,但这不是最终结果) 我的自定义视图中有以下两种方法: protected void onDraw(Canvas canvas) { super.onDraw(canvas); for (Drawable d : drawableList) { d.draw(canvas); } } public void AddP

我已经创建了一个自定义视图类,用于我正在处理的项目中。简单地说,我正在显示一个图像,然后在原始图像的顶部添加图像(当前通过单击图像,但这不是最终结果)

我的自定义视图中有以下两种方法:

protected void onDraw(Canvas canvas)
{
    super.onDraw(canvas);

    for (Drawable d : drawableList)
    {
        d.draw(canvas);
    }
}

public void AddPoint(float x, float y)
{
    Drawable tempDrawable = pin;
    tempDrawable.setBounds((int)x, (int)y, (int)x + 50, (int)y + 50);

    drawableList.add(tempDrawable);

    invalidate();
}
AddPoint()
方法在
OnTouchListener
中调用,并传递
触摸事件的坐标

它当前的工作方式是显示主图像,但只显示我单击的最新图像,以前的图像就消失了


有人知道我做错了什么吗?

我已经知道我做错了什么

代码行:

Drawable tempDrawable = pin;
我改为:

Drawable tempDrawable = mainRes.getDrawable(R.drawable.pin);

我从自定义视图类中编写的init(Context-Context)方法中获得了mainRes。

您在子类化哪个类?@Blackbelt只是视图类。我不确定这是否正确,但是…视图可见吗?它是添加到容器中的吗?@Blackbelt是的,当我在手机上运行程序时,会显示大图像,但只有添加到ArrayList的最新“pin”会显示在该图像的顶部。这是一个简单的for each循环,它不应该绘制ArrayList中的每个项目吗?啊,明白了。如果要绘制多个管脚,则需要多个管脚。您只是在更改其边界,但可绘制的边界始终是相同的