gpt4 book ai didi

android - 旋转后移动图像在 android 中的行为不正确

转载 作者:行者123 更新时间:2023-11-29 21:11:50 25 4
gpt4 key购买 nike

我遇到了益智游戏的问题,我将图像制作成一些方形图 block ,我将位图图 block 打乱并旋转到 90 180 或 270 度,然后将它们设置为 GridView 中的适配器。现在我在 GridView 项上应用了 onTouch 监听器,我可以将图 block 拖放到 gridview 上,但问题是当我触摸并拖动显示原始图 block 的 90 或 180 或 270 度图 block 时,例如 0 度图 block .以下是我的代码,请查看并向我提供建议。

public boolean onTouch(View v, MotionEvent 事件){

        ClipData data = ClipData.newPlainText("", "");

DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(v);

if (event.getAction() == MotionEvent.ACTION_DOWN) {
if (hashMap.containsKey(v)) {
touchedItemPosition = hashMap.get(v);
touchedItemPos = touchedItemPosition;
MyBitamp bitamp = itemList_dump.get(touchedItemPos);

v.startDrag(data, shadowBuilder, v, 0);

}

v.setVisibility(View.INVISIBLE);

return true;
} else

if (event.getAction() == MotionEvent.ACTION_CANCEL) {
v.setVisibility(View.VISIBLE);
return false;
}

else

if (event.getAction() == MotionEvent.ACTION_MOVE) {


return true;
}

else if (event.getAction() == MotionEvent.ACTION_UP) {

}
return false;

}



public boolean onDrag(View v, DragEvent event) {
dropedItemPosition = hashMap.get(v);
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_STARTED:


// do nothing
break;
case DragEvent.ACTION_DRAG_ENTERED:

break;
case DragEvent.ACTION_DRAG_EXITED:

break;

case DragEvent.ACTION_DROP:
swapItemPositions(dropedItemPosition, touchedItemPosition);

break;

case DragEvent.ACTION_DRAG_ENDED:

Log.i("Drop", "end");

default:
break;
}
return true;
}

最佳答案

最后我找到了解决方案,问题不在于 Action 移动案例,问题在于 DragShadowBuilder。它是一个预定义的,所有方式都只显示原始数据(BITMAP)。

那么,我做的是?我刚刚创建了一个自定义阴影生成器。下面的链接显示了自定义 DragShadowBuilder

Changing dragshadow in android, while dragging happens

在那个类中,我们有 fromBitmap() 方法,我根据我的要求修改了,那里只是旋转位图。

关于android - 旋转后移动图像在 android 中的行为不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22523951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com