2012-03-14 51 views
3

我知道当阴影结束时我可以改变目标,但是我真的想改变阴影以指示当它超过目标时将执行的动作。DragShadowBuilder - 超过目标时更改阴影?

我可以通过更改onProvideShadowMetrics的输出onDrawShadow来修改DragShadowBuilder。

我到目前为止已经添加了一些公共方法,可以通过目标访问并尝试更新一个保存画布&视图的类变量,但它看起来并没有在进行更改时实际更新。这是我的公开方法,当影子超过目标时会被调用。

public void onTarget(String string) { 
     mView.draw(mCanvas); 
     Paint redPaint = getFillTextPaint(0.00003f, 0xFFFF0000, 0.05225f); 
     RectF r = new RectF(); 
     r.set(mCanvas.getWidth()-100.0f, 0,mCanvas.getWidth(), mCanvas.getHeight()); 
     mCanvas.drawRoundRect(r,8.0f,8.0f, redPaint); 
     mView.invalidate(); 
    } 

谢谢,

回答

5

DragShadowBuilder.onDrawShadow()View.startDrag()在拖动开始时调用和下降的过程。
不幸的是,在API级别11中引入的本机拖放不支持在启动后更改位图。
或者,你可以滚,如图自己的拖放机制,例如herehere,因为它是API级之前完成11

+0

我不知道,如果你把位图视图中LocalState对象,如果你能将其拉出并在拖动时进行修改。我可能会尝试。 – Chrispix 2012-05-08 14:35:08

+0

我不认为这可以工作,因为位图是绘制在你无法访问的Surface上。查看[View]的源代码(http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.3_r1/android/view/View。 java?av = f#13313) – Apuleius 2012-05-08 17:37:40

+0

欣赏它。看起来你是对的。 – Chrispix 2012-05-08 18:22:28