【发布时间】:2016-01-13 07:15:10
【问题描述】:
我在我的应用程序中使用拖放功能。它工作正常。现在,如果视图未放置在放置的视图上,当视图返回到其原始位置时,我在为视图设置动画时遇到问题。
我通过
创建了我的阴影视图 View.DragShadowBuilder shadowBuilder = new MyDragShadowBuilder(view);
view.startDrag(data, shadowBuilder, view, 0);
我的 shadowbuilder 类是,
private static class MyDragShadowBuilder extends View.DragShadowBuilder {
private static Drawable shadow;
public MyDragShadowBuilder(View v) {
// Stores the View parameter passed to myDragShadowBuilder.
super(v);
v.buildDrawingCache();
shadow = new BitmapDrawable(v.getDrawingCache());
}
@Override
public void onProvideShadowMetrics (Point size, Point touch){
// Defines local variables
int width, height;
width = (int)(getView().getWidth() * 1.1);
height =(int)(getView().getHeight() * 1.1);
shadow.setBounds(0, 0, width, height);
size.set(width, height);
touch.set(width / 2, height / 2);
}
@Override
public void onDrawShadow(Canvas canvas) {
// Draws the ColorDrawable in the Canvas passed in from the system.
shadow.draw(canvas);
}
}
现在,当我发现不成功的放置时,我希望我的视图具有动画效果并返回到原来的位置。
case DragEvent.ACTION_DRAG_ENDED:
if (!event.getResult()) {
if (dragged.getTag() == v.getTag()){
int[] location={0,0};
v.getLocationOnScreen(location);
Log.v("values::", "x:" + x + " - y:" +x);
addViewRemoveViewFromWindow(dragged, location);
}
}
break;
我能够在location 数组中获得我的视图的原始位置,即我的结束位置。我想要我在屏幕上拖动的视图(阴影视图)位置。但在任何情况下我都无法得到它。已尝试在DragEvent.ACTION_DRAG_LOCATION: 案例中获取它,但没有运气。它总是返回原始视图位置或放置视图位置的位置。我想要拖动阴影图像的位置。我想在两个位置之间的窗口中应用翻译动画。当我尝试使用 2 个静态位置时,窗口中 2 个位置之间的动画视图效果很好。
【问题讨论】:
标签: android drag-and-drop