Android 使用 ImageResource 和 Drawable 的区别
Android difference between using ImageResource and Drawable
我是 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;
然后我如何在 OnDragListener 中使用 setImageDrawable:
进行设置
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 而不会出现内存问题。
CON:因为你传入的是一个整数,所以setImageResource()
方法必须执行Bitmap读取和解码才能显示图像。该方法在 UI 线程上执行此操作,这可能会导致 'latency hiccup',具体取决于图像的大小和设备的处理能力。这会导致您的用户在处理图像时在屏幕上看到滞后或有趣的行为。
方法 setImageDrawable()
接收实际的 Drawable 对象。
PRO:您已经拥有实际的 Drawable,因此无需处理此数据即可显示它。对于此方法,您不会在屏幕上看到延迟问题。
CON:这里的缺点是您可能最终会在其他方法之间传递一个可绘制对象,以便访问它以进行 setImageDrawable()
方法调用。大量传递 Drawable 对象并不是一个好主意,因为它们可能很大。
我是 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;
然后我如何在 OnDragListener 中使用 setImageDrawable:
进行设置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 而不会出现内存问题。
CON:因为你传入的是一个整数,所以setImageResource()
方法必须执行Bitmap读取和解码才能显示图像。该方法在 UI 线程上执行此操作,这可能会导致 'latency hiccup',具体取决于图像的大小和设备的处理能力。这会导致您的用户在处理图像时在屏幕上看到滞后或有趣的行为。
方法 setImageDrawable()
接收实际的 Drawable 对象。
PRO:您已经拥有实际的 Drawable,因此无需处理此数据即可显示它。对于此方法,您不会在屏幕上看到延迟问题。
CON:这里的缺点是您可能最终会在其他方法之间传递一个可绘制对象,以便访问它以进行 setImageDrawable()
方法调用。大量传递 Drawable 对象并不是一个好主意,因为它们可能很大。