我的ACTION_DOWN
方法的onTouch(View v)
中包含以下代码,如下所示......
if (event.getAction() == MotionEvent.ACTION_DOWN) {
DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
view.startDrag(null, shadowBuilder, view, 0);
myOnClickListener.onClick(view);
return true;
}
现在我在这个案例中的观点是ChessPiece。我有chessPiece.setBackground(R.color.black)
和chessPiece.setImageBitmap(pawnBitmap)
。
目前,当我拖动棋子时,它会用它拖动背景颜色,这是我不想要的。那么有什么方法可以在拖动时移除视图的背景,以便DragShadow
只是位图的位置?
答案 0 :(得分:1)
你必须创建自己的dragshadow。这个例子帮助我当我想玩dragshadow:http://lemonycode.blogspot.be/2012/11/using-custom-dragshadowbuidler-in.html
如您所见,有两个重要方法:
public void onProvideShadowMetrics(Point shadowSize, Point touchPoint)
和
public void onDrawShadow(Canvas canvas)
第一种方法用于调整dragshadow的大小,第二种方法用于实际绘制阴影。在你的情况下,你的棋子。你可以用
Bitmap bitmap = ((BitmapDrawable)image.getDrawable()).getBitmap();
获取位图并在绘制它之前更改它。
答案 1 :(得分:0)
在OnDragListener()
私有final类MyDragListener实现OnDragListener {
@Override
public boolean onDrag(View v, DragEvent event) {
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_STARTED:
getResources().getDrawable(android.graphics.Color.TRANSPARENT);
break;
....
}
return true;
}
}
这应该有效。祝你好运!