package com.google.mcommerce.sample.android.chapter08.dragAndDrop; // This file is DropZone.java import android.animation.ObjectAnimator; import android.app.Fragment; import android.content.ClipData; import android.os.Bundle; import android.util.Log; import android.view.DragEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.animation.CycleInterpolator; import android.widget.TextView; import com.google.mcommerce.sample.android.R; public class DropZone extends Fragment { private View dropTarget; private TextView dropMessage; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle icicle) { View v = inflater .inflate(R.layout.c08_drag_drop_zone, container, false); dropMessage = (TextView) v.findViewById(R.id.dropmessage); dropTarget = (View) v.findViewById(R.id.droptarget); dropTarget.setOnDragListener(new View.OnDragListener() { private static final String DROPTAG = "DropTarget"; private int dropCount = 0; private ObjectAnimator anim; public boolean onDrag(View v, DragEvent event) { int action = event.getAction(); boolean result = true; switch (action) { case DragEvent.ACTION_DRAG_STARTED: Log.v(DROPTAG, "drag started in dropTarget"); break; case DragEvent.ACTION_DRAG_ENTERED: Log.v(DROPTAG, "drag entered dropTarget"); anim = ObjectAnimator .ofFloat((Object) v, "alpha", 1f, 0.5f); anim.setInterpolator(new CycleInterpolator(40)); anim.setDuration(30 * 1000); // 30 seconds anim.start(); break; case DragEvent.ACTION_DRAG_EXITED: Log.v(DROPTAG, "drag exited dropTarget"); if (anim != null) { anim.end(); anim = null; } break; case DragEvent.ACTION_DRAG_LOCATION: Log.v(DROPTAG, "drag proceeding in dropTarget: " + event.getX() + ", " + event.getY()); break; case DragEvent.ACTION_DROP: Log.v(DROPTAG, "drag drop in dropTarget"); if (anim != null) { anim.end(); anim = null; } ClipData data = event.getClipData(); Log.v(DROPTAG, "Item data is " + data.getItemAt(0).getText()); dropCount++; String message = dropCount + " drop"; if (dropCount > 1) message += "s"; dropMessage.setText(message); break; case DragEvent.ACTION_DRAG_ENDED: Log.v(DROPTAG, "drag ended in dropTarget"); if (anim != null) { anim.end(); anim = null; } break; default: Log.v(DROPTAG, "other action in dropzone: " + action); result = false; } return result; } }); return v; } }