在OnDragListener中使用setBackgroundColor()

时间:2019-01-07 08:19:12

标签: android drag-and-drop

我是Android的新手。

假设我有2个视图:myImagemyContainer

我想做的事情:当我将myImage拖放到myContainer中时,myContainer的背景颜色将被更改。

为了实现此目标,我尝试了2种方法:

1)像这样将setBackgroundColor()放在ACTION_DROP内:

class MyDragListener implements OnDragListener {
    ...
    @Override
    public boolean onDrag(View v, DragEvent event) {
        int action = event.getAction();
        switch (event.getAction()) {
            ...
            case DragEvent.ACTION_DROP:
                ...
                myContainer.setBackgroundColor(Color.GREEN);

使用这种方法,当我将myImage拖放到myContainer时,myContainer的背景颜色变为绿色,但是只是短暂的,之后它自动变为了旧颜色。

2)像这样将setBackgroundColor()放在ACTION_DRAG_ENDED内:

class MyDragListener implements OnDragListener {
    ...
    @Override
    public boolean onDrag(View v, DragEvent event) {
        int action = event.getAction();
        switch (event.getAction()) {
            ...
            case DragEvent.ACTION_DRAG_ENDED:
                ...
                myContainer.setBackgroundColor(Color.GREEN);

使用这种方法,当我将myImage拖放到myContainer时,myContainer的背景颜色变为绿色,但是之后,如果我开始新的拖放操作,拖放动作,它将自动变回原来的颜色。

我发现setBackgroundColor()的这种行为很难理解,因为以前我一直认为它的作用是永久的。

您能否向我解释为什么在这种情况下颜色会一直被重置,以及如何使颜色的变化永久不变。

谢谢。

0 个答案:

没有答案