Di fronte al problema di lasciare che il dragshaddow (creato da un DragShadowBuilder) reagisca a qualcosa, mentre il trascinamento sta accadendo.Modifica dragshadow in Android, mentre il trascinamento avviene
Qualcuno sa come dovrebbe essere fatto?
Di fronte al problema di lasciare che il dragshaddow (creato da un DragShadowBuilder) reagisca a qualcosa, mentre il trascinamento sta accadendo.Modifica dragshadow in Android, mentre il trascinamento avviene
Qualcuno sa come dovrebbe essere fatto?
Ecco il mio codice completo per costruttore trascinare ombreggiatura personalizzata (gist for custom drag shadow).
Tuttavia, come altri hanno dichiarato non v'è alcuna possibilità di modificare la resistenza ombra utilizzando la funzionalità native introdotta in 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);
}
}
Marcin, cosa succede se la mia ombra personalizzata non è una bitmap, ma un layout? Ho una domanda senza risposta (piccola quantità fornita) riguardo a tale scenario: http://stackoverflow.com/questions/22274384/how-to-create-a-custom- drag-ombra –