要取消Android拖放的拖动动画,可以使用DragShadowBuilder类的onProvideShadowMetrics()方法,并返回一个空的阴影矩形。
以下是一个示例代码,展示如何实现取消拖动动画:
public class MyDragShadowBuilder extends View.DragShadowBuilder {
public MyDragShadowBuilder(View view) {
super(view);
}
@Override
public void onProvideShadowMetrics(Point shadowSize, Point shadowTouchPoint) {
// 取消阴影矩形
shadowSize.set(0, 0);
shadowTouchPoint.set(0, 0);
}
}
然后,在开始拖动的时候,使用自定义的DragShadowBuilder类来创建拖放阴影:
View view = findViewById(R.id.my_draggable_view);
// 设置拖动监听器
view.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// 创建拖动阴影
View.DragShadowBuilder shadowBuilder = new MyDragShadowBuilder(v);
// 开始拖动
v.startDrag(null, // 传递的数据
shadowBuilder, // 拖动阴影
v, // 本地数据
0); // 标志
return true;
}
});
通过返回一个空的阴影矩形,拖动动画将被取消。