拖动期间更改视图的属性

时间:2014-01-12 12:07:17

标签: java android

我的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只是位图的位置?

2 个答案:

答案 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;
    }

}

这应该有效。祝你好运!