如何在绘制之前获取调整大小的自定义视图的宽度和高度

2024-01-03

在我的自定义 View .xml 中,我将宽度和高度定义为w = 600dp , h = 700dp。现在我知道 getMeasuredHeight() / getMeasuredWidth() 在绘制视图后给出宽度和高度的值,它们可能与我在 .xml 文件中给出的值不同,是否有解决方法getMeasuredHeight() and getMeasuredWidth()在视图实际绘制在布局上之前的值,而不使用onMeasure() ?

以及如何计算改变dp不同屏幕的尺寸?像我的600h*700w当在模拟器上运行时转换为300*300 .


您可以覆盖onSizeChanged()获取视图绘制时的高度和宽度。参考如下:

  @Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    mWidth = w;
    mHeight = h;
    super.onSizeChanged(w, h, oldw, oldh);
    Log.d(TAG, "onSizeChanged: " + " width: " + w + " height: " + h + " oldw " + oldw + " oldh " + oldh);
}

要将 dp 转换为像素,您可以使用以下代码:

   sizeInPixels = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
            sizeInDp, getResources().getDisplayMetrics());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在绘制之前获取调整大小的自定义视图的宽度和高度 的相关文章

随机推荐