This is not the best way to achieve it, but it's a solution...
Create a class that extends your parent ViewGroup, say RelativeLayout or some other ViewGroups.
Find your own view in overriding onFinishInflate().
Override the onLayout() method and manually layout your own view after calling super.onLayout().
Finally, every time you want to refresh the location of your own view, just call requestLayout().
Here is a sample below:
private AwesomeView mMyView;
private int mYourDesiredX;
private int mYourDesiredY;
@Override
public void onFinishInflate() {
super.onFinishInflate();
if (mMyView == null) {
mMyView = (AwesomeView)findViewById();
}
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
mMyView.layout(mYourDesiredX,
mYourDesiredY,
mYourDesiredX + mMyView.getWidth(),
mYourDesiredY + mMyView.getHeight());
}
But this is not an efficient solution.
If you are making games, try SurfaceView or even GLSurfaceView and draw the objects by your own with Canvas.