ami*_*gal 5 android runtime view coordinates android-relativelayout
View
我在将视图(我的类扩展)放置在特定位置时遇到问题。我设计了一款将屏幕视为网格的游戏。我从用户那里获取特定视图的 x 和 y 坐标(我有不同类型的视图)。
我的第一个任务是在其位置上设置正确的视图。我该怎么做?我用的RelativeLayout
是屏幕。
PS我不想使用AbsoluteLayout
参数,因为它被截断了。
这不是实现它的最佳方法,但它是一个解决方案......
创建一个扩展您的父级ViewGroup
(例如RelativeLayout
或其他一些ViewGroup
)的类。在 override 中找到你自己的观点onFinishInflate()
。
重写该onLayout()
方法并在调用后手动布局您自己的视图super.onLayout()
。
最后,每次你想刷新自己视图的位置时,只需调用requestLayout()
.
下面是一个示例:
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());
}
Run Code Online (Sandbox Code Playgroud)
但这不是一个有效的解决方案。
如果您正在制作游戏,请尝试SurfaceView
甚至GLSurfaceView
使用自己绘制对象Canvas
。
归档时间: |
|
查看次数: |
10981 次 |
最近记录: |