首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >android启动拖拽后,如何更改拖拽阴影?

android启动拖拽后,如何更改拖拽阴影?
EN

Stack Overflow用户
提问于 2015-05-26 14:51:34
回答 1查看 731关注 0票数 1

我想在调用startDrag之后更改dragShadow的映像。但是我找不到任何可以做到这一点的API。有什么建议我该怎么做呢?

代码语言:javascript
复制
            ClipData.Item item = new ClipData.Item((CharSequence) v.getTag());
            String[] mimeTypes = {ClipDescription.MIMETYPE_TEXT_PLAIN};
            ClipData dragData = new ClipData(v.getTag().toString(), mimeTypes, item);
            View.DragShadowBuilder dragShadow= new View.DragShadowBuilder(((ImageButton)findViewById(R.id.rele_button)));
EN

回答 1

Stack Overflow用户

发布于 2015-05-27 14:46:13

扩展View.DragShadowBuilder的类的更多代码

代码语言:javascript
复制
public class ImageDragShadowBuilder extends View.DragShadowBuilder {
private static Drawable shadow;

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);
}

}

调用start drag后更改的代码

此代码属于onDrag函数

代码语言:javascript
复制
case DragEvent.ACTION_DRAG_ENTERED:
                    ImageDragShadowBuilder.fromResource(getBaseContext(), R.mipmap.phone_icon);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30451409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档