【发布时间】:2015-05-26 08:53:23
【问题描述】:
我想通过拖放移动文本视图。并给它一个新的位置。
我使用以下代码:
ClipData data = ClipData.newPlainText("", "");
double rotationRad = Math.toRadians(view.getRotation());
final int w = (int) (view.getWidth() * view.getScaleX());
final int h = (int) (view.getHeight() * view.getScaleY());
double s = Math.abs(Math.sin(rotationRad));
double c = Math.abs(Math.cos(rotationRad));
final int width = (int) (w * c + h * s);
final int height = (int) (w * s + h * c);
final View v = view;
View.DragShadowBuilder shadow = new View.DragShadowBuilder(view) {
@Override
public void onDrawShadow(Canvas canvas) {
canvas.scale(v.getScaleX(), v.getScaleY(), width / 2, height / 2);
canvas.rotate(v.getRotation(), width / 2, height / 2);
canvas.translate((width - v.getWidth()) / 2, (height - v.getHeight()) / 2);
super.onDrawShadow(canvas);
}
@Override
public void onProvideShadowMetrics(Point shadowSize, Point shadowTouchPoint) {
shadowSize.set(width, height);
shadowTouchPoint.set(shadowSize.x / 2, shadowSize.y / 2);
}
};
view.startDrag(data, shadow, view, 0);
现在拖动阴影总是从被触摸的图像视图的中心构建。
如何从我触摸视图的位置精确地构建拖动阴影?
【问题讨论】:
-
如何捕获视图被触摸的点并使其成为您翻译的中心?覆盖 onTouch(MotionEvent e) 方法并获取触摸位置
标签: android drag-and-drop touch move