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

标签 java android android-custom-view density-independent-pixel onmeasure

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

以及如何计算不同屏幕上变化的 dp 大小?就像我的 600h*700w 在模拟器上运行时转换为 300*300

最佳答案

您可以覆盖 onSizeChanged() 以在绘制 View 时获取 View 的高度和宽度。请参阅下文:

  @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());

关于java - 如何在绘制之前获取调整大小的自定义 View 的宽度和高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31548891/

相关文章:

android - EditText 的子类看起来与 Android 4 上的普通 EditText 不同

Java非最终静态Map在静态 block 中的操作

java - 声音播放完毕后如何移动到下一个数组?

android - 在android View 中纵向和横向之间切换时出现问题

php - 将服务器 URL 链接安全地存储在 android 应用程序中

android - 自定义 View 上的 CastClassException

android - 如何将自定义属性传递给嵌套的 xml

java - 长度可变的字节数组

java - Java 中的词法、句法或语义错误差异

android - 基于 LibGdx 的 Android 应用程序中指定区域的 WebView