public boolean startDrag(final int x, final int y, int arg2) { Configure.isDragging = true; int dragPosition = arg2; final DragGridView gridView = getCurGridView(); // copy fromView as a bitmap fromView = (ViewGroup) gridView.getChildAt(dragPosition - gridView.getFirstVisiblePosition()); Animation disappear = AnimationUtils.loadAnimation(getContext(), R.anim.out); disappear.setAnimationListener( new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) {} @Override public void onAnimationRepeat(Animation animation) {} @Override public void onAnimationEnd(Animation animation) { windowParams.gravity = Gravity.TOP | Gravity.LEFT; startDragX = fromView.getLeft() + gridView.getDragGridOffsetLeft() + (int) (3 * Configure.screenDensity); startDragY = fromView.getTop() + gridView.getYDragGridOffsetTop() + (int) (3 * Configure.screenDensity); windowParams.x = startDragX; windowParams.y = startDragY; windowParams.alpha = 0.8f; windowParams.height = WindowManager.LayoutParams.WRAP_CONTENT; windowParams.width = WindowManager.LayoutParams.WRAP_CONTENT; fromView.setVisibility(View.GONE); mViewDragging = DragGridView.createGridItemView( LayoutInflater.from(getContext()), Configure.draggingItem); mWindowManager.addView(mViewDragging, windowParams); mViewDragging.startAnimation( AnimationUtils.loadAnimation(getContext(), R.anim.del_done)); startEdit(); } }); fromView.startAnimation(disappear); return false; }
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); dragGridView = (DragGridView) findViewById(R.id.grid_view); List<String> nameList = new ArrayList<String>(); for (int i = 0; i < 20; i++) { nameList.add("name:" + i); } gridAdapter = new GridAdapter(this, nameList); dragGridView.setAdapter(gridAdapter); dragGridView.setNumColumns(4); }