Android 如何拖动旋转的拖曳阴影?

Android 如何拖动旋转的拖曳阴影?,android,drag-and-drop,rotation,Android,Drag And Drop,Rotation,我使用ObjectAnimator旋转了TextView,如下所示: ObjectAnimator rotate = ObjectAnimator.ofFloat(aRotatedTextView, "rotation", 0f, someAngle); public boolean onLongClick(View view) { ClipData data = ClipData.newPlainText("DragData", (String) view.getTag());

我使用ObjectAnimator旋转了TextView,如下所示:

ObjectAnimator rotate = ObjectAnimator.ofFloat(aRotatedTextView, "rotation", 0f, someAngle);
public boolean onLongClick(View view) {
    ClipData data = ClipData.newPlainText("DragData", (String) view.getTag());
    DragShadowBuilder dragShadowBuilder = new View.DragShadowBuilder(view);
    mDragInProgress = view.startDrag(data, dragShadowBuilder, view, 0);
    view.setVisibility(View.INVISIBLE);
    return true;
}
现在,我尝试在长时间单击时拖放旋转的(!)文本视图,如下所示:

ObjectAnimator rotate = ObjectAnimator.ofFloat(aRotatedTextView, "rotation", 0f, someAngle);
public boolean onLongClick(View view) {
    ClipData data = ClipData.newPlainText("DragData", (String) view.getTag());
    DragShadowBuilder dragShadowBuilder = new View.DragShadowBuilder(view);
    mDragInProgress = view.startDrag(data, dragShadowBuilder, view, 0);
    view.setVisibility(View.INVISIBLE);
    return true;
}
所发生的情况是,创建的DragShadow没有旋转(角度==0)。我已经看到了很多位图(但不是旋转)的例子,但我无法使用它们。
有没有办法创建一个旋转的DragShadow?

我自己也一直在做这个循环,在各种论坛上都没有找到太多的帮助

我的观察结果是,即使视图旋转,提供给阴影生成器的画布也处于原始的未旋转状态

最接近正确旋转的拖动阴影是通过实现自定义阴影生成器并将当前拖动视图的旋转传递给它

在onProvideShadowMetrics(点大小、点触摸)中,我根据当前旋转设置阴影尺寸,以便对于旋转视图,有足够的高度绘制阴影

在onDrawShadow(Canvas Canvas)中,我再次考虑旋转,并以与视图相同的数量漫游画布。然后,我让基类通过调用super.onDrawShadow(canvas)来创建实际的阴影。旋转点与旋转实际视图时使用的旋转点相同

最终的结果是,我有一个旋转的拖动阴影,这是部分剪辑。看起来,即使在基类中使用画布旋转,绘图点仍然非常接近画布的边缘,以至于部分阴影被剪裁。我还没有弄清楚如何调整画布,使基类中的绘图以正确的偏移量完成,以防止剪切

看起来,我可能会在不依赖基类的情况下完成所有阴影绘制

祝你好运

m、 a

更新:


谢谢你,维罗斯。我终于重新访问了我的应用程序的这一部分,并尝试了您建议的方法,效果非常好。我不能投票,因为我没有足够的分数等。

需要同样的东西。像这样实现它(还包括缩放)


+谢谢你节省了我宝贵的时间。干得好,伙计!