I have an app filled with custom buttons for Android. I would like to allow user to rearrange these buttons like image buttons of Home or Application panel.
I researched on this and found out that I can use drag & drop functionality to interact with user’s motion. But in my case parent layout can be different. OnMove or OnDrop event, I need to actually move that button in that corresponding layout.
So question is how I can find a layout that contains coordinate x & y and put the button in it.
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
status = START_DRAGGING;
break;
case MotionEvent.ACTION_UP:
status = STOP_DRAGGING;
break;
case MotionEvent.ACTION_MOVE:
if(status == START_DRAGGING){
//parentLayout.setPadding((int)event.getRawX(), 0,0,0);
//**What to do here**
parentLayout.invalidate();
}
break;
}
return true;
}
You can loop through all the controls in the parent container and compare each child’s bounds with the current X, Y. You can get a views bounds by calling this:
View.getHitRect()
So something like this:
This is just Psuedo-code and will need to be adapted for whatever you use is (i.e. adding recursion for nested controls).
Hope that helps.