2011-11-11 15 views

cevap

6

Aşağıda özel sürükleme gölge oluşturucu için benim tam kodu (gist for custom drag shadow) bu.

Ancak, diğerleri API-11 tanıtılan yerli işlevini kullanarak sürükle gölge değiştirmek için mümkün değildir belirtildiği gibi.

package com.marcingil.dragshadow; 

import android.content.Context; 
import android.graphics.Bitmap; 
import android.graphics.Canvas; 
import android.graphics.Point; 
import android.graphics.drawable.BitmapDrawable; 
import android.graphics.drawable.Drawable; 
import android.view.View; 

public class ImageDragShadowBuilder extends View.DragShadowBuilder { 
    private Drawable shadow; 

    private ImageDragShadowBuilder() { 
     super(); 
    } 

    public static View.DragShadowBuilder fromResource(Context context, int drawableId) { 
     ImageDragShadowBuilder builder = new ImageDragShadowBuilder(); 

     builder.shadow = context.getResources().getDrawable(drawableId); 
     if (builder.shadow == null) { 
      throw new NullPointerException("Drawable from id is null"); 
     } 

     builder.shadow.setBounds(0, 0, builder.shadow.getMinimumWidth(), builder.shadow.getMinimumHeight()); 

     return builder; 
    } 

    public static View.DragShadowBuilder fromBitmap(Context context, Bitmap bmp) { 
     if (bmp == null) { 
      throw new IllegalArgumentException("Bitmap cannot be null"); 
     } 

     ImageDragShadowBuilder builder = new ImageDragShadowBuilder(); 

     builder.shadow = new BitmapDrawable(context.getResources(), bmp); 
     builder.shadow.setBounds(0, 0, builder.shadow.getMinimumWidth(), builder.shadow.getMinimumHeight()); 

     return builder; 
    } 

    @Override 
    public void onDrawShadow(Canvas canvas) { 
     shadow.draw(canvas); 
    } 

    @Override 
    public void onProvideShadowMetrics(Point shadowSize, Point shadowTouchPoint) { 
     shadowSize.x = shadow.getMinimumWidth(); 
     shadowSize.y = shadow.getMinimumHeight(); 

     shadowTouchPoint.x = (int)(shadowSize.x/2); 
     shadowTouchPoint.y = (int)(shadowSize.y/2); 
    } 
} 
+0

Marcin, özel gölgem bitmap değil, bir düzen değilse ne gibi bir senaryo ile ilgili cevapsız bir soru (küçük bir ödül) var: http://stackoverflow.com/questions/22274384/how-to-create-a-custom- sürükle gölge –

İlgili konular