下面列出了android.widget.GridView#INVALID_POSITION 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* 触摸移动时,window更新
*
* @param ev
*/
private void updateWindow(MotionEvent ev) {
if (mode == MODE_DRAG) {
float x = ev.getRawX() - mX;
float y = ev.getRawY() - mY;
if (layoutParams != null) {
layoutParams.x = (int) x;
layoutParams.y = (int) y;
mWindowManager.updateViewLayout(dragView, layoutParams);
}
float mx = ev.getX();
float my = ev.getY();
int dropPosition = pointToPosition((int) mx, (int) my);
Log.i(TAG, "dropPosition : " + dropPosition + " , tempPosition : " + tempPosition);
if (dropPosition == tempPosition || dropPosition == GridView.INVALID_POSITION) {
return;
}
itemMove(dropPosition);
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
if (savedInstanceState != null) {
final int savedAvatarIndex = savedInstanceState.getInt(KEY_SELECTED_AVATAR_INDEX);
if (savedAvatarIndex != GridView.INVALID_POSITION) {
mSelectedAvatar = Avatar.values()[savedAvatarIndex];
}
}
super.onCreate(savedInstanceState);
}
/**
* 手指抬起时,item下落
*/
private void itemDrop() {
if (tempPosition == position || tempPosition == GridView.INVALID_POSITION) {
getChildAt(position).setVisibility(VISIBLE);
} else {
ListAdapter adapter = getAdapter();
if (adapter != null && adapter instanceof DragGridAdapter) {
((DragGridAdapter) adapter).exchangePosition(position, tempPosition, false);
}
}
}