您的位置:首页 > 移动开发 > Android开发

Android 在初始化Activity时获取View的width和height

2016-05-12 12:21 591 查看
在onCreate方法中获取View的 width 和height

我们先看看直接获取的结果:



代码如下:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

View view = findViewById(R.id.rl_view);
Log.i("MainActivity", "---View-->>直接获取width:" + view.getWidth()+ " height:" + view.getHeight());
}


测试证实:直接获取是不行的,因为 布局还没有绘制完成。

那么有什么解决方法呢?

下面介绍View中post方法:

在post方法中需要传入一个Runnable线程参数,这个线程还是运行在UI线程中:

代码如下:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

final View view = findViewById(R.id.rl_view);
Log.i("MainActivity", "---View-->>直接获取width:" + view.getWidth()+ " height:" + view.getHeight());

view.post(new Runnable() {
@Override
public void run() {
Log.i("MainActivity", "---View-->>线程中获取width:" + view.getWidth()+ " height:" + view.getHeight());
}
});
Log.i("MainActivity", "---View-->>第二次直接获取width:" + view.getWidth()+ " height:" + view.getHeight());
}


测试的结果如下:



大家会发现,执行Runnable中的Log代码比直接获取宽度的Log代码要慢0.14秒,这个时间里,Activity已经完成了布局。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android view 宽高