Android sdk 3.0中的拖动手势实现错误
我想在LinearLayout视图中实现拖动手势,其中包含一些组件,例如TextView、button。现在我使用APL level 11,3.0 SDK根据Android Official文档进行设计,代码中包含的方法如下: onLongClick()---使用view.startDrag(clipdate,dragShadow,null,0)触发拖动动作 onDrag()---一个拖动侦听器,使用view.layout(左、上、右、下),刷新组件的外观,直到被拖动为止 我遇到的问题是,当我在LinearLayou视图中拖动一个组件时,其他组件会消失,而当我放下拖动的组件时,它会和其他组件一起消失Android sdk 3.0中的拖动手势实现错误,android,view,drag,sdk3.0,Android,View,Drag,Sdk3.0,我想在LinearLayout视图中实现拖动手势,其中包含一些组件,例如TextView、button。现在我使用APL level 11,3.0 SDK根据Android Official文档进行设计,代码中包含的方法如下: onLongClick()---使用view.startDrag(clipdate,dragShadow,null,0)触发拖动动作 onDrag()---一个拖动侦听器,使用view.layout(左、上、右、下),刷新组件的外观,直到被拖动为止 我遇到的问题是,当我在
所以,请任何人都能帮我告诉我它是如何出错的,或者我怎样才能根据你的建议很好地实施拖动手势。首先,感谢并感谢每一位GU来到这里。我使用的代码如下:
@Override
public boolean onLongClick(View view) {
// TODO Auto-generated method stub
boolean result = true;
if(DEBUG){
Log.d(TAG, "onLongClick ()");
}
mLongTouch = true;
ClipData.Item item = new ClipData.Item((CharSequence) view.getTag());
ClipData dragData = new ClipData((CharSequence) view.getTag(), mTabDragMimeData, item);
SimeTabDragListener.SimeTabDragShadow myShadow = new SimeTabDragListener.SimeTabDragShadow(view);
view.startDrag(dragData, myShadow, null, 0);
return result;
}
@Override
public boolean onDrag(View view, DragEvent event) {
// TODO Auto-generated method stub
boolean result = true;
int action = event.getAction();
int eventX = (int)event.getX();
int eventY = (int)event.getY();
if(DEBUG){
Log.d(TAG, "onDrag()...event is "+action + ".... X cor is "+event.getX()+"...Y cor is"+event.getY());
}
view.layout(eventX - mDownOffsetsX, eventY - mDownOffsetsY,
eventX + mDownViewWidth - mDownOffsetsX, eventY + mDownViewHeight - mDownOffsetsY);
view.postInvalidate();
return result;
//返回super.onDragEvent(事件);
}
而LinearLayout中包含的组件(TextView)是静态的,并且是通过XML加载的,问题是当拖动一个TextView时,其他TextView将消失,而当拖放它时,其他TextView将消失
有没有人知道这是怎么回事,或者如何在LayoutView中实现拖动动作,谢谢大家来到这里
// drag shadows
public static class SimeTabDragShadow extends View.DragShadowBuilder {
private static Drawable shadow;
public SimeTabDragShadow(View view) {
super(view);
if(DEBUG && view instanceof TextView)
Log.d(TAG, "drag view is text");
shadow = new ColorDrawable(Color.LTGRAY);
}
@Override
public void onProvideShadowMetrics(Point shadowSize,
Point shadowTouchPoint) {
// TODO Auto-generated method stub
super.onProvideShadowMetrics(shadowSize, shadowTouchPoint);
}
@Override
public void onDrawShadow(Canvas canvas) {
// TODO Auto-generated method stub
super.onDrawShadow(canvas);
}
}