View测量值的获取时机

因为视图的测量过程和activity的生命周期不同步,所以无法在生命周期的方法中获取测量值。

测量值只能在异步的测量过程完成后才能获取。有两种方法。

一、在onResume()中调用view的post方法

视图的测量是在消息队列中完成的,优先完成系统消息,系统消息执行完毕后才会执行用户消息。这样View调用post条件的消息会在视图测量完成后执行,就能获取测量的宽度和高度。

int with, height;

    @Override
    protected void onResume() {
        super.onResume();
        imgGridView.post(new Runnable() {
            @Override
            public void run() {
                with = imgGridView.getMeasuredWidth();
                height = imgGridView.getMeasuredHeight();
            }
        });
    }

二、在onWindowFocusChanged()方法里面,获取宽高

视图获取焦点true的时候,测量过程完成,可以获取测量值。但是要通过DecorView获取到contentView,我不喜欢这个方法。

你可能感兴趣的:(Android,安卓开发遇到问题总结)