我根据某些UI控件的夸大尺寸定义了一些动画。什么是活动生命周期中最早的点,我可以了解UI元素的大小,我可以查询它们的尺寸?
答案 0 :(得分:2)
通过setContentView()
方法设置活动的内容后,我最早能够从我的小部件(大小,文本和其他)中获取信息。
答案 1 :(得分:1)
Per Rich的要求:
您可以使用GlobalLayoutListener
来确定宽度和高度的时间,如下所示:
final View myView = findViewById(R.id.id_of_view);
ViewTreeObserver vto = myView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int viewHeight = myView.getHeight();
int viewWidth = myView.getWidth();
// Do what you want with the width and height
ViewTreeObserver obs = myView.getViewTreeObserver();
obs.removeGlobalOnLayoutListener(this);
}
});
答案 2 :(得分:0)
如果您想要深入到小部件已放置的位置,您必须扩展要监视的每个小部件。 然后覆盖onDraw方法并捕获该视图是否已被绘制一次
private boolean imVisible=false;
public boolean imVisible() {
return imVisible;
}
@Override
protected void onDraw(Canvas canvas) {
if(!imVisible){
imVisible=true;
}
super.onDraw(canvas);
}
然后你可以对感兴趣的小部件进行for循环,你知道它们是按照尺寸绘制的。
更好的解决方案是在第一次激活绘制的侦听器时调用onDraw。您必须设置一组监听器来监视窗口小部件的进度。这样,最后一个小部件在屏幕上的确切时刻......你知道。