Drag thumbnail fixes / improvements

* Properly wipe the thumbnail canvas before handing it to the app for
  its contents to be drawn

* Provide a getView() method in DragThumbnailBuilder that allows
  clients or subclasses to get at the associated view.  This is
  especially for clients that want to draw entire (sub)layouts as
  the drag thumbnail, by overriding onDrawThumbnail(Canvas c)
  like this:

  // Override specifically for drawing a whole ViewGroup into
  // the drag thumbnail canvas
  @Override
  public void onDrawThumbnail(Canvas c) {
      getView().dispatchDraw(c);
  }

Change-Id: Ib43ddd7cf1d44faf2d7f6ba79f102bc3c7f14596
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 8e4591a..2b63eff 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -9854,6 +9854,10 @@
             mView = new WeakReference<View>(view);
         }
 
+        final public View getView() {
+            return mView.get();
+        }
+
         /**
          * Provide the draggable-thumbnail metrics for the operation: the dimensions of
          * the thumbnail image itself, and the point within that thumbnail that should
@@ -9932,6 +9936,7 @@
             if (token != null) {
                 Canvas canvas = surface.lockCanvas(null);
                 try {
+                    canvas.drawColor(0, PorterDuff.Mode.CLEAR);
                     thumbBuilder.onDrawThumbnail(canvas);
                 } finally {
                     surface.unlockCanvasAndPost(canvas);