我是Android开发的新手,最初是为我的图形设置用户使用SetImageResource拖动的。但是,在以后的开发中,它并不需要我需要的方法,因此我后来在以后使用SetImageDrawable拖动图像并将其放置在新位置。

两者之间的核心区别是什么?我一直在网上寻找,但仍不确定这些主要差异以及它们将如何影响我的程序。

我如何使用setImageResource在视图上最初设置图像的示例:

case 'J':
    if (tempFlip[9]) {
        GameBoardImages[k].setImageResource(temp[9]);
    } else {
        temp[9] = symbolTilesID[k];
        tempFlip[9] = true;
        GameBoardImages[k].setImageResource(symbolTilesID[k]);
    }
    break;


然后我如何使用setImageDrawable在OnDragListener中设置它:

target = GameBoardImages[ImageNumber]; //Spot getting dragged to

dragged = (ImageView) myDragEvent.getLocalState(); //Dragging item

target_draw = target.getDrawable();
dragged_draw = dragged.getDrawable();

dragged.setImageDrawable(target_draw);
target.setImageDrawable(dragged_draw);

最佳答案

方法setImageResource()接受一个可绘制的资源ID(它是一个int)。

PRO:您传入的是整数,这在内存方面非常小。如果在调用setImageResource()之前有多个方法调用,则它们可以轻松地绕过此int且没有内存问题。

缺点:因为要传入整数,所以setImageResource()方法必须执行位图读取和解码才能显示图像。该方法在UI线程上执行此操作,这可能会导致“延迟打'”,具体取决于图像的大小和设备的处理能力。这将导致您的用户在处理图像时在屏幕上看到滞后或有趣的行为。

方法setImageDrawable()接收实际的Drawable对象。

PRO:您已经有了实际的Drawable,因此无需处理该数据即可显示它。对于这种方法,您不会在屏幕上看到延迟问题。

缺点:这里的缺点是您可能最终会在其他方法之间传递可绘制对象,以便可以访问它来调用setImageDrawable()方法。大量传递Drawable对象并不是一个好主意,因为它们可能很大。

07-27 15:58