我想在布局中移动视图,并使用API Level 11(startDrag,将View.DragShadowBuilder覆盖为shadowView)实现,但我遇到了一个问题,在删除视图时无法获得实际坐标。
我尝试使用getView.getX()
,但在删除视图时,该值无效。
如何在时间下降视图中获得坐标?
public SimeDragShadowView(View view, Context context) {
super(view);
shadow = new ColorDrawable(Color.BLUE);
mDragShadowView = getView();
mInitX = (int) view.getX();
mInitY = SimeTabContainer.mDownViewInitY;
if(DEBUG){
Log.d(TAG, " shadow button width is .."+getView().getWidth() +"... height is .."+getView().getHeight());
}
}
@Override
public void onProvideShadowMetrics(Point size, Point touch) {
// Defines local variables
if(DEBUG){
Log.d(TAG, " onProvideShadowMetrics()");
}
int width, height;
width = getView().getWidth();
height = getView().getHeight();
shadow.setBounds(mInitX-10, mInitY-10, mInitX + width, mInitY + 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);
getView().draw(canvas);
if(DEBUG){
Log.d(TAG, " getView()... x cor is .."+getView().getX());
}
}
答案 0 :(得分:0)
这个问题已经解决了,我使用的方法是,监听事件动作值2,并将已接收到的事件计数到dragView,根据原始位置和计数moveoffsets数,我可以检查位置i放下视图。