视图完成后Android执行

时间:2018-03-25 22:44:25

标签: java android

我是新手,所以对我很轻松。 我正在尝试执行一段代码,该代码需要在旋转设备后知道ImageView的新宽度和高度。

以下代码捕获配置更改,但ImageView尚未实际更改,因此无法获得准确的高度和宽度。

// This fires whenever the configuration of the device changes (Portrait to Landscape of vice versa)
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    // Checks the orientation of the screen
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
        Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
    }

// This procedure moves the items based on the new size of the ImageView.
   this.ShowMeasurements();
}

我已经搜索并查看了许多应该起作用的方法,但我很快就会出现。

任何建议都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

可以肯定的是,该视图具有准确的尺寸,您可以在onCreate()中尝试此代码:

imageView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            int viewWidth = imageView.getWidth();
            int viewHeight = imageView.getHeight();
            if (viewWidth > 0 && viewHeight > 0) {
                //do some stuff here
            }
            //we remove this listener to not being notified every time the view
            //changes it's size. 
            //But if you need this info every time, just remove the last line
            imageView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
        }
    });

其中,imageView是对ImageView

的引用