Мне нужен способ сделать перетаскивание между дочерним видом и родительским представлением. Так что я положил изображение для лучшего объяснения:Android Перетащите вид и измените его родительский
Желтый представляют собой класс, который расширяет RelativeLayout. Black представляют собой класс, который расширяет ViewGroup White представляет ImageViews Red представляет собой вид
Так что мне нужно сбросить белые блоки (ImageViews) на желтом View, но я только перетащить Black View, потому что ImageView имеет BlackView как отец, поэтому мое решение на данный момент - это перетаскивание взгляда отца, но когда я добавляю представление о YellowView, отмените мое событие перетаскивания, поэтому мне нужно продолжить перетаскивание, когда я переключаюсь между Views. Обратите внимание: для WhiteView есть единственный способ размещения в RedView, если Touch Up и White вид далеко от RedView White, вернутся к BlackView.
Итак, я использую этот код, я получаю от сети:
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
touchDown(event);
break;
case MotionEvent.ACTION_MOVE:
touchMove(event);
break;
case MotionEvent.ACTION_UP:
touchUp(event);
break;
}
if (aViewIsDragged())
return true;
return false;
}
private void touchDown(MotionEvent event) {
initialX = (int)event.getRawX();
initialY = (int)event.getRawY();
lastTouchX = (int)event.getRawX() + (gridPageWidth);
lastTouchY = (int)event.getRawY();
}
public boolean onLongClick(View v) {
if(positionForView(v) != -1) {
movingView = true;
dragged = positionForView(v);
return true;
}
return false;
}
private void touchMove(MotionEvent event) {
if (movingView && aViewIsDragged()) {
lastTouchX = (int) event.getX();
lastTouchY = (int) event.getY();
moveDraggedView(lastTouchX, lastTouchY);
manageSwapPosition(lastTouchX, lastTouchY);
manageEdgeCoordinates(lastTouchX);
manageDeleteZoneHover(lastTouchX, lastTouchY);
}
}
private void moveDraggedView(int x, int y) {
ImageView child = null;
View childAt = getChildAt(dragged);
int width = childAt.getMeasuredWidth();
int height = childAt.getMeasuredHeight();
int left = x - (1 * width/2);
int t = y - (1 * height/2);
childAt.layout(left, t, left + width, t + height);
//TODO at this point if left less than 0, I detect part of view is out and I need to change this view to Yello
if (left <0){
child = (ImageView) childAt;
ViewGroup parent = (ViewGroup) getParent();
cloneimage = new ImageView(getContext());
cloneimage.setBackgroundDrawable(child.getDrawable());
parent.addView(cloneimage);
}
}
Так что я думаю, что it'sa немного dificult, но если какой-либо один помочь мне изменить WhiteView от черного до желтого и держать тащили я apreciate ,
Thank's!
Можете ли вы изменить свой вопрос, и включают в себя код, который вы теперь используются? – FoamyGuy
@FoamyGuy хорошо, я положил кусок кода. Если вам нужна дополнительная информация, я снова отредактирую. – Ricardo