drag_sort_listview.jar
<pre name="code" class="java"><pre name="code" class="java"> @Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
FragmentTransaction transaction;
DSLVFragment f = (DSLVFragment) getSupportFragmentManager().findFragmentByTag(mTag);
DragSortListView dslv = (DragSortListView) f.getListView();
DragSortController control = f.getController();
。。。。。
}
public DragSortListView(Context context, AttributeSet attrs) {
super(context, attrs);
。。。。。
mFloatViewManager = controller;
//xzshan01 确定drag的有效起点 落点down后,event不在往下dispatch了,down事件路径结束;
//接下来是move和up事件;先到onIntercept中看看
setOnTouchListener(controller);
。。。。。
}
}
@Override
public boolean onTouch(View v, MotionEvent ev) {
。。。。。
//xzshan02 ondown中确定drag的第一个落点
mDetector.onTouchEvent(ev);
。。。。。
}
down事件处理
@Override
public boolean onDown(MotionEvent ev) {
。。。。。
mHitPos = startDragPosition(ev);
if (mHitPos != MISS && mDragInitMode == ON_DOWN) {
Log.d("event","==startDrag==");
startDrag(mHitPos, (int) ev.getX() - mItemX, (int) ev.getY() - mItemY);
}
。。。。。
}
move 事件:
@Override
public boolean onTouch(View v, MotionEvent ev) {
。。。。。
// if (mFloatView != null) {
if (mDragState == DRAGGING) {
//xzshan06 ondrag
onDragTouchEvent(ev);
more = true; // give us more!
。。。。。
}
up事件:
@Override
public boolean onTouch(View v, MotionEvent ev) {
。。。
case MotionEvent.ACTION_UP:
。。。。
mDslv.stopDragWithVelocity(true, 0);
。。。
}
case MotionEvent.ACTION_CANCEL:
mIsRemoving = false;
mDragging = false;
break;
}
。。。。
}