DragShadowBuilder - Смена тени, когда над цели? - PullRequest
4 голосов
/ 14 марта 2012

Я знаю, что могу изменить цель, когда тень над ней, но я действительно хочу изменить тень, чтобы указать действие, которое будет выполнено с ней, когда она находится над целью.

Я могу изменить DragShadowBuilder, когда он создается, изменяя вывод onProvideShadowMetrics & onDrawShadow.

Я зашел так далеко, что добавил некоторые общедоступные методы, к которым может обращаться целевой объект, и пытается обновить переменную класса, содержащую холст и представление, но похоже, что он фактически не обновляется при внесении изменений,Это мой публичный метод, который вызывается, когда тень находится над целью.

    public void onTarget(String string) {
        mView.draw(mCanvas); 
        Paint redPaint = getFillTextPaint(0.00003f, 0xFFFF0000, 0.05225f);
        RectF r = new RectF();
        r.set(mCanvas.getWidth()-100.0f, 0,mCanvas.getWidth(), mCanvas.getHeight());
        mCanvas.drawRoundRect(r,8.0f,8.0f, redPaint);
        mView.invalidate();
    }

Спасибо,

1 Ответ

6 голосов
/ 08 мая 2012

DragShadowBuilder.onDrawShadow () вызывается View.startDrag () в начале процесса перетаскивания.
К сожалению, собственный Drag and Drop, который был представленна уровне API 11 не поддерживает изменение растрового изображения после запуска.
В качестве альтернативы, вы можете использовать свой собственный механизм перетаскивания, как показано, например, здесь и здесь ,как это было сделано до API уровня 11.

...