2011-11-11 33 views

Trả lời

6

Đây

là mã hoàn chỉnh của tôi cho tùy chỉnh xây dựng kéo bóng (gist for custom drag shadow). Tuy nhiên, như những người khác tuyên bố không có khả năng để thay đổi kéo bóng sử dụng chức năng bản địa giới thiệu trong API-11.

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, những gì nếu bóng tùy chỉnh của tôi không phải là một bitmap, nhưng một bố trí? Tôi có một câu hỏi chưa được trả lời (tiền thưởng nhỏ cung cấp) liên quan đến kịch bản như vậy: http://stackoverflow.com/questions/22274384/how-to-create-a-custom- kéo bóng –

Các vấn đề liên quan