私のAndroidアプリケーションでは、境界線をImageView
長押ししたときに境界線を設定したいと考えています。ユーザーがビューを離したときに同じ(境界線)も削除したい。誰か、これで私を助けてください。
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
mTouchDownX = (int) event.getX();
mTouchDownY = (int) event.getY();
break;
}
case MotionEvent.ACTION_MOVE: {
int x = (int) event.getX();
int y = (int) event.getY();
if (mDraggedItem >= 0) {
setDraggedItemPosition(x, y);
int index = getIndexFromCoordinates(x, y);
if (index == mDraggedItem || index < 0) break;
if (index < mDraggedItem) {
for (int i = index; i < mDraggedItem; i++) {
moveViewToPosition(i, i+1);
}
for (int i = mDraggedItem-1; i >= index; i--) {
View view = mGridMap.get(i);
mGridMap.put(i+1, view);
}
} else {
for (int i = index; i > mDraggedItem; i--) {
moveViewToPosition(i, i-1);
}
for (int i = mDraggedItem+1; i <= index; i++) {
View view = mGridMap.get(i);
mGridMap.put(i-1, view);
}
}
mLog.i("onTouchEvent - ACTION_MOVE - mDraggedItem: "+mDraggedItem+" index: "+index);
mGridMap.put(index, mDraggedView);
mDraggedItem = index;
}
break;
}
case MotionEvent.ACTION_UP: {
if (mDraggedItem >= 0) {
Point xy = getCoordinatesFromPosition(mDraggedItem);
mDraggedView.layout(xy.x, xy.y, xy.x+mChildSize, xy.y+mChildSize);
mDraggedView.clearAnimation();
mDraggedView.setPadding(0, 0, 0, 0);
setOnClickListener(this);
invalidate();
mRearrangeListener.onRearrange(mGridMap);
}
mDraggedItem = -1;
for(int i=0;i<mGridMap.size();i++)
{
String tag = mGridMap.get(i).getTag().toString();
}
break;
}
}
return super.onTouchEvent(event);
}
@Override
public boolean onLongClick(View v) {
int index = getIndexFromCoordinates(mTouchDownX, mTouchDownY);
if (index >= 0) {
// animate this item for enabling drag.
mDraggedItem = index;
mDraggedView = mGridMap.get(index);
mDraggedView.setPadding(2, 2, 2, 2);
mDraggedView.setBackgroundColor(Color.WHITE);
setDraggedItemPosition(mTouchDownX, mTouchDownY);
animateDragged();
}
return true;
}